问题描述
|
我遇到需要在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剃刀视图,在这里我必须显示几乎所有字段,所以我没有使用select new {....}
即使我尝试使用select new {series,members}
,我也遇到了这个例外-
无法隐式转换类型
\'System.Linq.IQueryable \'
到\'System.LinQ.IQueryable 解决方法
尝试这个:
var items1 = _dataContext.Items.AsQueryable();
var items2 = from series in items1
join members in items1 on series.Series_Title
equals members.Series_Title
where series.Item_ID== \'S117\'
select series;