c# - 如何更改此 LINQ 查询以使用我的列表而不是硬编码的数字?
问题描述
我终于让我的 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);
}
我想用我拥有的包含 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;
}
解决方案
假设这myList
是一个List<string>
,你可以尝试这样的事情:
var query = from r in d.AsEnumerable()
where myList.Any(r.Field<string>("Column7").Contains)
select r;
或者,如果myList
是 a List<int>
,您可能希望将 Database 列修改为也具有 type int
,您可以执行以下操作:
var query = from r in d.AsEnumerable()
where myList.Contains(r.Field<int>("Column7"))
select r;
推荐阅读
- r - Theme() 不适用于 ggplot2 Unicode 显示
- php - 选中复选框,删除选中的消息
- ios - 如何在 UIView - Swift 中居中我的 CAShapeLayer?
- amazon-web-services - AWS Lambda - NAT 网关互联网访问导致超时
- ios - 使用 AudioKit 将音频文件作为麦克风输入播放 - 用于 iOS 模拟器听写测试
- arrays - 根据前一个元素的每个值的百分比差异创建一个数组
- ios - 保存到多个实体中 - 核心数据 - Swift
- python - 如何在 Python 中水平移动直方图?
- python - 在这种情况下我应该使用什么正则表达式?
- python - MySQL 在使用来自 python 的 LOAD DATA 从大型 csv 传输数据期间崩溃