次のコードで LINQ OrderBy が機能しない理由を教えてください (エラーはありませんが、メソッドが並べ替えられません...)
まずは自分のタイプ
public class IQLinksView
{
public int id { get; set; }
public int catid { get; set; }
public int? viewed {get;set;}
public string name {get;set;}
public string desc {get;set;}
public string url {get;set;}
public string pic {get;set;}
public string cat {get;set;}
}
次にクエリを実行します:
IQueryable<IQLinksView> newView =
from links in this.emContext.tbl_otherlinks
select new IQLinksView { id = links.pklinkid, catid =
links.tbl_catgeory.pkcategoryid, viewed = links.linkviewed, name = links.linkname,
desc = links.linkdesc, pic = links.linkpicture, url = links.linkurl, cat =
links.tbl_catgeory.categoryname };
ここまでは大丈夫です :-) でもその後
newView.OrderBy(x => x.viewed);
何も変更しないだけです...ページは結果をロードしています...しかし順序はありません...嗅ぎます
私は Try with (比較オブジェクトの作成 ...) を持っています:
newView.OrderBy(x => (Int32)x.viewed, new CompareIntegers());
結果は同じですが、順序はありません...
回避策はありますが、何が足りないのか疑問に思っています...
ご提案がございましたら、よろしくお願いいたします :-)
------------------------
戻り値を捨てないでくださいe. OrderBy 拡張メソッドは入力を変更しません。試してみてください:
newView = newView.OrderBy(x => x.viewed);
表示された値が正しいと仮定すると、それが機能しない理由はありません。また、OrderBy が順序付けを台無しにする操作 (例: Distinct) の後にあることを確認してください。
コーディングを楽しんでください!