在LINQ查询中动态设置列名

在LINQ查询中动态设置列名,linq,dynamic,Linq,Dynamic,我正在尝试写一个方法,它允许我在不同的列上搜索不同的数据表 到目前为止,我有以下几点: string selectedValue; string searchColumn; string targetColumn; var results = (from a in dt.AsEnumerable() where a.Field<string>(searchColumn) == selectedValue

我正在尝试写一个方法,它允许我在不同的列上搜索不同的数据表

到目前为止,我有以下几点:

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();
字符串selectedValue;
字符串搜索列;
字符串targetColumn;
var结果=(来自dt.AsEnumerable()中的a)
其中a.Field(searchColumn)=selectedValue
选择新的
{
targetColumn=a.字段(targetColumn)
}).Distinct();
哪种类型完成了任务,但我只剩下列名
targetColumn
,而不是我想要的实际列名

有没有办法解决这个问题

提前谢谢


CM

我将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);