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 に答える