linq作为列名称的数据集问题

时间:2012-06-06 21:25:37

标签: c# linq linq-to-dataset

如何避免在针对数据表的LINQ查询中使用魔术字符串?

这有效:

public IEnumerable getDisplayNames()
{
    IEnumerable nameQry =
        from row in displayTable.AsEnumerable()
        select row.Field("display");

    return nameQry;
}

但是失败了"指定演员表无效。":

public IEnumerable getDisplayNames()
{
    string disp = myDictionary["D"];

    IEnumerable nameQry =
        from row in displayTable.AsEnumerable()
        select row.Field(disp);

    return nameQry;
}

我的偏好是使用本地字符串(或myDictionary的直接引用),而不是硬编码字符串。所以我想使用字符串disp而不是短语" display"在我的查询中。

1 个答案:

答案 0 :(得分:0)

尝试使用

static IEnumerable<DataRow> GetTheRows(DataTable dt, string name)
{
    return dt.AsEnumerable().Where(r => r.Field<string>("yourColumn") == name);
}

或者您给定方案中的正确数据类型。使用Field<T>方法时需要指定类型。