2

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

这有效:

公共 IEnumerable getDisplayNames()
{
    IEnumerable nameQry =
        从 displayTable.AsEnumerable() 中的行
        选择行。字段(“显示”);

    返回名称Qry;
}

但这失败了“指定的演员表无效。”:

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

    IEnumerable nameQry =
        从 displayTable.AsEnumerable() 中的行
        选择行。字段(显示);

    返回名称Qry;
}

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

4

1 回答 1

0

尝试使用

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

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

于 2012-06-06T21:32:53.613 回答