如何使用 c# 中的 RowFilter 筛选对象中每个项目的数据表

本文关键字:项目 数据表 对象 何使用 中的 RowFilter 筛选 | 更新日期: 2024-10-25 05:43:22

我有一个数据表,我可以像这样过滤它。

DataView dv = new DataView(table);
dv.RowFilter = string.Format("[SAILING-DATE]='{0}'", "03/12/16");//step ONE

这将成功返回结果。

现在我有这样的对象

var myObject = returnPorts(one).Split('|');

myObject包括 5 个项目。 所以我想在DataTable上面过滤myObject中的所有项目.我不知道该怎么做。需要这样

 dv.RowFilter = string.Format("[SAILING-PORT]='{0}'", "Should filter with all the items in the myObject at once");//step TWO

需要您的帮助。另一件事是我想同时执行第一步第二步。也需要帮助

如何使用 c# 中的 RowFilter 筛选对象中每个项目的数据表

。非常感谢。

RowFilter 使用相当基本的语法,但允许您使用 IN

var parts = returnPorts(one).Split('|');
dv.RowFilter = string.Format("[SAILING-PORT] IN ('{0}')", String.Join("','", parts));

要将其与日期组合在一起,请将其添加到parts或更简洁的格式:

var parts = returnPorts(one).Split('|');
dv.RowFilter = string.Format("[SAILING-PORT] IN ('{0}', '{1}')", 
                             "03/12/16", 
                             String.Join("','", parts));
dv.RowFilter = string.Format("[SAILING-PORT] in ('{0}')", string.Join(" ',' ", myObject ));

这会将数组中的所有值连接成单个字符串。这将允许您从数组中过滤所有值。

这是完整的答案。 @freedomn-m's回答对我帮助很大,非常感谢。

对于第一部分(使用对象中的任意数量的项目进行过滤).thanx 到 @freedomn-m

var parts = returnPorts(one).Split('|');
dv.RowFilter = string.Format("[SAILING-PORT] IN ('{0}')", String.Join("','", parts));

对于第二部分 - 简明任意数量的条件

dv.RowFilter = string.Format("[SAILING-PORT] IN  ('{0}') AND [CRUISE-ONLY]=('{1}') AND [SAILING-DATE]=('{2}')", String.Join("','", threee), "YES", "03/12/16");

谢谢大家,谁帮助了我。