我有一种情况,我需要在 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>”存在显式转换。
任何建议将不胜感激。