LINQ のテーブルで自己結合を行う必要がある状況があります。このテーブルは、ItemsID、Title、SeriesTitle などの多くのフィールドで構成されています。アイテムはシリーズまたはメンバーのいずれかであり、"S" または "M" の文字が含まれる ItemId を調べればわかります。ItemId "S117" を持つシリーズのメンバーであるすべてのレコードを取得する必要があります。以下のコードを使用して、単純な SQL でこれを行うことができます。
select i.Series_Title, i.Item_ID, i2.Item_ID as Member_ID,
i2.Title as Member_Title, i2.Series_Title as Member_Series_Title
from Items i join Items i2 on i.Series_Title = i2.Series_Title
where i.Item_ID = "S117"
さて、このクエリを LINQ で翻訳すると、次のようになります。
items = _dataContext.Items.AsQueryable();
items = from series in items
join members in items on series.Series_Title.ToLower()
equals members.Series_Title.ToLower()
where series.Item_ID.ToLower().Equals(itemId)
select series;
このクエリの最後の行は、select seriesシリーズのみを取得しますが、メンバーは取得しません。メンバーも必要です。ほとんどすべてのフィールドを表示する必要があるMVC3 Razorビューを使用しているため、使用していません を使用 select new {....}
しようとしてもselect new {series, members}、この例外が発生しました-
タイプ 'System.Linq.IQueryable' を 'System.LinQ.IQueryable<My.App.models.Items>' に暗黙的に変換することはできません 明示的な変換が存在します。
どんな提案でも大歓迎です。