我终于有了LINQ来查询数据表,并使用硬编码值,得到了包含这些记录的新数据表。但是我需要帮助来更新此代码,以将List returnClass()用作where子句中的变量。
var query = from r in d.AsEnumerable()
where r.Field<string>("Column7") == "672"
select r;
DataTable output = query.CopyToDataTable<DataRow>();
foreach (DataRow row in output.Rows)
{
output.ImportRow(row);
}
Id想用我拥有的包含94个值的列表替换==“ 672”,我想从数据表中排除该值。 这是我发给我的原始帖子,但现在我只需要LINQ查询帮助就可以使用我的列表,并以一种排除任何包含列表中值的记录的方式编写。我试图使用该列表将我的34k记录过滤到29k。
我尝试过的另一个例子不起作用
var query = from r in d.AsEnumerable()
where !r.Field<string>("Column7").Contains(Convert.ToString(returnClass()))
select r;
DataTable output = query.CopyToDataTable<DataRow>();
foreach (DataRow row in output.Rows)
{
output.ImportRow(row);
}
列表看起来像这样(为清楚起见被截断了)
private List<int> returnClass()
{
List<int> cl = new List<int>();
cl.Add(75);
cl.Add(76);
cl.Add(77);
cl.Add(78);
cl.Add(79);
cl.Add(80);
cl.Add(81);
cl.Add(82);
return cl;
}
答案 0 :(得分:2)
假设myList
是List<string>
,您可以尝试执行以下操作:
var query = from r in d.AsEnumerable()
where myList.Any(r.Field<string>("Column7").Contains)
select r;
或者,如果myList
是List<int>
,则可能需要修改数据库列,使其也具有类型int
,您可以执行以下操作:
var query = from r in d.AsEnumerable()
where myList.Contains(r.Field<int>("Column7"))
select r;