sql到linq使用distinct

时间:2015-02-25 10:15:33

标签: c# asp.net-mvc linq

我有以下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'.

1 个答案:

答案 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();

我不知道它是否会起作用 - 我已经假设你想要IdFullName来自哪里 - 但它至少比你当前的查询更有效。