0

私はDataRowを持っています:Row[1, 2, 3, 4, ...]

主キー列名の配列もあります。PKeys[1, 2, ...]

DataRow 内の一致する要素からの値 (文字列) を含む各 PKeys 要素の要素を持つ配列またはリストが必要です。

もちろん、私はこれを行うことができます:

List<string> keyVals = new List<string>();
foreach (string PKey in PKeys)
{
    keyVals.Add(Row[PKey].ToString());
}

しかし、おそらくLINQを使用した、よりエレガントな方法はありますか?

ありがとう

4

3 に答える 3

1
keyVals.AddRange(from p in PKeys select Row[p].ToString());

と同じです

keyVals.AddRange(PKeys.Select(p => Row[p].ToString()));
于 2012-09-03T09:43:50.637 に答える
1

これを試して:

PKeys.Select(key => Row[key].ToString()).ToList()
于 2012-09-03T09:45:30.643 に答える
0

どうですか

static IEnumerable<T> GetKeyVals<T>(IEnumerable<T> rows, IEnumerable<T> pKeys)
{
    foreach (var PKey in PKeys)
    {
        yield return Row[PKey]; 
    }
}

したがって、遅延実行を使用してこれを行うことができます。

var keysVals = GetKeyVals(Row, PKeys);

これは、実際には、

var keysVals = PKeys.Select(pkey => return Row[pkey]);

に急いでいるのがよくわかりませんIList<string>

于 2012-09-03T09:52:37.020 に答える