尝试在LINQ中返回一个不同的SubString列表。
这将返回列表,但是有100个带有子字符串的记录。我只想返回不同的列表。
var query = from b in db.Certificates
select b.CertificateNumber.Substring(0,4);
ViewBag.BoxNumber = new SelectList(query.ToList());
我尝试在
中添加distinctselect b.CertificateNumber.Substring(0,4).Distinct();
但它扔了
DbDistinctExpression需要一个集合参数。
答案 0 :(得分:6)
您目前正在这样做的方式,它将尝试对每个证书编号的前四个字符进行区分(删除重复的字符),然后返回 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();
答案 1 :(得分:1)
我明白了
ViewBag.BoxNumber = new SelectList(query.ToList().Distinct());
答案 2 :(得分:1)
var certificatesList = (from b in db.Certificates
select b.CertificateNumber.Substring(0,4)).Distinct().ToList();