我有以下linq语句,但无法使其正常工作。
代码是:
(from ll in table1
join l in table2
on ll.LandlordId equals l.Id
select((value, index) => new SelectListItem
{
Value = value.Id.Tostring(),
Text = value.FullName
})).Distinct().OrderBy(x => x.FullName).ToList()
系统是MVC,我将结果放入视图模型中。
视图模型定义为IEnumerable<SelectListItem>
。
错误消息是:
The type of one of the expressions in the join clause is incorrect.
Type inference failed in the call to 'Join'.
答案 0 :(得分:1)
您的查询表达式此刻完全被破坏 - 您尝试使用查询表达式和非查询表达式的混合。此外,构建SelectListItem
然后使用Distinct
对我来说似乎是一个坏主意。你可以试试这个:
var query = (from ll in table1
join l in table2
on ll.LandlordId equals l.Id
select new { l.Id, ll.FullName })
.Distinct()
.OrderBy(x => x.FullName)
.AsEnumerable() // Do the rest locally
.Select(x => new SelectListItem {
Value = x.Id.ToString(),
Text = x.FullName
})
.ToList();
我不知道它是否会起作用 - 我已经假设你想要Id
和FullName
来自哪里 - 但它至少比你当前的查询更有效。