0

我有一个数据行:Row[1, 2, 3, 4, ...]

我还有一个主键列名数组:PKeys[1, 2, ...]

我想要一个数组或列表,其中每个 PKeys 元素都有一个元素,其中包含来自 DataRow 中匹配元素的值(字符串)。

我当然可以这样做:

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 回答