0

好吧,我正在尝试使用 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() 方法才能构建字典。如果我做错了什么,请纠正我。谢谢!

4

2 回答 2

3

这应该有效:

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);     
于 2013-08-23T09:56:02.343 回答
1

您可以通过使用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);
于 2013-08-23T09:54:57.503 回答