不同的列表 LINQ 查询

distinct list LINQ Query

正在尝试 return LINQ 中不同的子字符串列表。

这是 return 列表,但有 100 条记录带有子字符串。我只想 return 不同的列表。

var query = from b in db.Certificates
            select b.CertificateNumber.Substring(0,4);

ViewBag.BoxNumber = new SelectList(query.ToList());

我尝试添加不同的

select b.CertificateNumber.Substring(0,4).Distinct();

但是它扔了

DbDistinctExpression requires a collection argument.

按照您当前的操作方式,它将尝试对每个证书编号的前四个字符执行 Distinct(去除重复字符),然后 return all 个结果。您可能会收到错误消息,因为您正在使用的驱动程序无法以这种方式创建有效的 SQL 查询。

相反,在调用 Distinct 之前将查询的整个第一部分括在括号中,如下所示:

var query = (from b in db.Certificates
             select b.CertificateNumber.Substring(0,4)).Distinct();

或者,使用方法语法而不是混合使用查询和方法语法:

var query = db.Certificates
              .Select(cer => cer.CertificateNumber.Substring(0,4))
              .Distinct();

我知道了

ViewBag.BoxNumber = new SelectList(query.ToList().Distinct());
 var certificatesList = (from b in db.Certificates
                    select b.CertificateNumber.Substring(0,4)).Distinct().ToList();