如何避免在针对数据表的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"在我的查询中。
答案 0 :(得分:0)
尝试使用
static IEnumerable<DataRow> GetTheRows(DataTable dt, string name)
{
return dt.AsEnumerable().Where(r => r.Field<string>("yourColumn") == name);
}
或者您给定方案中的正确数据类型。使用Field<T>
方法时需要指定类型。