在LINQ查询中动态设置列名

时间:2012-03-16 10:26:46

标签: linq dynamic

我正在尝试编写一种方法,允许我在不同的列上搜索不同的DataTable。

到目前为止,我有以下内容:

string selectedValue;
string searchColumn;
string targetColumn;

        var results = (from a in dt.AsEnumerable()
                       where a.Field<string>(searchColumn) == selectedValue
                      select new
                      {
                        targetColumn = a.Field<string>(targetColumn)
                      }).Distinct();

哪种方式可以完成工作,但我的列名称为targetColumn,而不是我想要的实际列名。

有什么方法可以解决这个问题吗?

提前致谢

CM

1 个答案:

答案 0 :(得分:1)

我将 LINQ 设为数据表

public List<DataRow> Where(this DataTable dt, Func<DataRow, bool> pred)
{
    List<DataRow> res = new List<DataRow>();
    try {
        if (dt != null && dt.Rows.Count > 0) {
            for (i = 0; i <= dt.Rows.Count - 1; i++) {
                if (pred(dt(i))) {
                    res.Add(dt(i));
                }
            }
        }
    } catch (Exception ex) {
        PromptMsg(ex);
    }
    return res;
}

用法

var RowsList = dt.Where(f => f("SomeField").toString() == "SomeValue" || 
                             f("OtherField") > 5);