生成字典(Linq-to-SQL)时出现异常
本文关键字:异常 Linq-to-SQL 字典 | 更新日期: 2023-09-27 18:28:41
我正在尝试使用linq-to-SQL构建一个字典。不确定如何使用以下查询选择不同的值。的想法是在一个日期之间获取标题的实例。
GolfitoDataContext db = new GolfitoDataContext();
var dic = db.GetTable<History>()
.Select(p => new { p.Title, p.Date }).Where(x => x.Date >= startDateFilter && x.Date <= endDateFilter)
.AsEnumerable()
.ToDictionary(k => k.Title, v => v.Date);
我得到一个例外,"已经添加了一个具有相同密钥的项目。"
我知道这与"标题"被重复有关。但不确定如何在上述条件下应用Distinct()方法来构建字典。如果我做错了什么,请纠正我。谢谢!
这应该有效:
GolfitoDataContext db = new GolfitoDataContext();
var dic = db.GetTable<History>()
.Select(p => new { p.Title, p.Date }).Where(x => x.Date >= startDateFilter && x.Date <= endDateFilter)
.DistinctBy(p => p.Title)
.AsEnumerable()
.ToDictionary(k => k.Title, v => v.Date);
您可以使用MoreLinQ
var dic = db.GetTable<History>()
.Select(p => new { p.Title, p.Date }).Where(x => x.Date >= startDateFilter && x.Date <= endDateFilter)
.DistinctBy(x=>x.Title)
.AsEnumerable()
.ToDictionary(k => k.Title, v => v.Date);