var sourceId =
(from workstation in db.station
join letter in db.letter on workstation.id equals letter.Site_Id
where ThatDate < DateTime.Now.AddYears(-1)
select workstatio).ToList();
这会生成一个列表,如果有多个列表将打印出重复,我该如何使用.distinct?
请告知,谢谢
答案 0 :(得分:0)
var sourceId =
(from workstation in db.station
join letter in db.letter on workstation.id equals letter.Site_Id
where ThatDate < DateTime.Now.AddYears(-1)
select workstation).Distinct().ToList();
看看这个
答案 1 :(得分:0)
您可能需要查看DistinctBy中的MoreLinq方法。您可以将lambda表达式作为参数传递的位置。
在您的示例中,它看起来与此类似:
var sourceId =
(from workstation in db.station
join letter in db.letter on workstation.id equals letter.Site_Id
where ThatDate < DateTime.Now.AddYears(-1)
select workstatio).DistinctBy(ws => ws.Id).ToList();
您还可以将DistinctBy用于多个属性:
var sourceId =
(from workstation in db.station
join letter in db.letter on workstation.id equals letter.Site_Id
where ThatDate < DateTime.Now.AddYears(-1)
select workstatio).DistinctBy(ws => new {Id = ws.Id, OtherProperty = ws.OtherProperty}).ToList();
Btw,而不是引用比较,匿名类型实例的相等性是通过比较它们的每个属性来确定的。
我最近在这个主题上找到了一个有趣的讨论,其中Anders Hejlsberg本人建议解决这个问题。你可以阅读它here.