c# - 动态生成linq

时间:2016-05-02 10:34:44

标签: c# linq

我需要动态生成一个查询来访问数据表中的某些列。

 string cols="row[Id],row[UserId], row[Code]";
 var result= (from DataRow row in dt.Rows
         select cols);

但这只返回" row [Id],row [UserId],row [Code]"。如何访问这些列中的值?

2 个答案:

答案 0 :(得分:0)

我怀疑使用基于linq的解决方案可以优雅地解决这个问题。使用循环并使用Item property访问DataRow列可以很容易地解决它。

public IEnumerable<object[]> GetValues(IList<string> columns, DataTable dt) {
  foreach (var row in dt.Rows) {
    var rowResult = new object[columns.Count];
    for (var col = 0; col < columns.Count; col++) {
      rowResult[col] = row.Item[columns[col]];
    }
    yield return rowResult;
  }
}

答案 1 :(得分:0)

为什么不把它放在字典里呢? Dictionary<string, object>键是列名,值是列的值。

        string[] cols = new string[] { "Id", "UserId", "Code" };
        var result = (from DataRow row in dt.Rows
                      select cols.ToDictionary(c => c, c => row[c]));