1

単一の列のみを参照して、データベースから個別の値を取得する方法。

たとえば、以下の特定のデータでは、結果は次のようになります... 以下の例を参照してください。

与えられたデータ

Prospect    Values
1            null
1            null
2            2.1
2            2.2
2            2.3
3            3.1
3            3.2
4            4.1
4            4.2

結果

Prospect    Values
1            null
2            2.1
3            3.1
4            4.1

個別の値は、プロスペクト列を参照しています。これはLINQで可能ですか?

ありがとう

RJ

4

3 に答える 3

0

これを試してください:(未テスト)

var q  = from row in rowList
         group row by row.Prospect into prospects
         select new { Prospect = prospects.Key, 
                      Value = prospects.First().Values };

rowListが何らかの種類であると仮定するとIEnumerable<Row>、行タイプにはフィールドProspectValuesが含まれます。

于 2012-09-28T03:12:50.797 に答える
0

これは機能します:

var results =
    values
        .ToLookup(x => x.Prospect, x => x.Value)
        .Select(x => new
        {
            Prospect = x.Key,
            Value = x.First()
        });

これから始めます:

var values = new []
{
    new { Prospect = 1, Value = (double?)null },
    new { Prospect = 1, Value = (double?)null },
    new { Prospect = 2, Value = (double?)2.1 },
    new { Prospect = 2, Value = (double?)2.2 },
    new { Prospect = 2, Value = (double?)2.3 },
    new { Prospect = 3, Value = (double?)3.1 },
    new { Prospect = 3, Value = (double?)3.2 },
    new { Prospect = 4, Value = (double?)4.1 },
    new { Prospect = 4, Value = (double?)4.2 },
};

次の結果が得られます。

結果

于 2012-09-28T03:26:49.837 に答える
0

これを行う最善の方法は、カスタムを作成IComparerしてメソッドに提供することDistinctです。

比較の実装にラムダを使用する汎用バージョンを作成しました。GetHashValueまた、どちらが最初にチェックされるかをオーバーライドします。この場合、プロスペクトの比較を返すことができます。

于 2012-09-28T03:39:43.143 に答える