gpt4 book ai didi

c# - 使用多个 where 子句的 Linq to Datatable

转载 作者:行者123 更新时间:2023-11-30 20:54:51 26 4
gpt4 key购买 nike

情况:使用多个 where 子句对数据表进行 Linq 查询。where 子句的过滤器来自多个组合框,如帐户、年、月等。查询的结果将保存到不同的数据表中。

我有不同的查询,例如...

        //Filter Year
var query = from myRow in ds.Tables["tblOriginal"].AsEnumerable()
where myRow.Field<DateTime>("Datum").Year == int.Parse(cmbFilterYear.Text)
select myRow;
ds.Tables["tblFilteredData"].Merge(query.CopyToDataTable());

...我有大约六个这样的 Linq 查询,我想在一个具有不同 where 子句的单个查询中使用

...&&...

如果所有 ComboBox 都填充了值,它就可以工作。

但是它不会工作,例如6 个 ComboBox 中只有 4 个填充了值。

是否可以将“IF...”放入查询的“where” block 中?

我已经尝试使用 stringbuilder 为 where 子句设置变量,但我无法将其转换为正确的 bool 值。

任何想法都会受到赞赏。

最佳答案

改用方法语法。它允许您逐步构建查询:

var query = ds.Tables["tblOriginal"].AsEnumerable();

int year;
if (Int32.TryParse(cmbFilterYear.Text, out year)) // condition for adding filter
query = query.Where(r => r.Field<DateTime>("Datum").Year == year);

// repear for other conditions

ds.Tables["tblFilteredData"].Merge(query.CopyToDataTable()); // execute query

关于c# - 使用多个 where 子句的 Linq to Datatable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18783690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com