生成字典(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()方法来构建字典。如果我做错了什么,请纠正我。谢谢!

生成字典(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)
        .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);