我有数据表dtResult和它的列使用linq或c#过滤数据表的动态/多重条件?
BuildSequence,
Build#,
BOptions,
BJob,
LogID BType,
BTypeKey,
BComponentName,
BCKey,
RName,
Rkey,
RDescrip,
RStatus,
BuildMatchExp,
VPart,
PNumber,
SName,
SKey,
OName,
OKey,
Date
现在我有一些过滤器,这些过滤器是动态创建,然后用户可以选择这些过滤器。这些过滤器是dtResult的列名称。我有选定的过滤器列表,列表包含FilterName和它的值。我的问题是基于选定的过滤器如何我可以过滤dtResult?由于这些过滤器并不稳定,所以每次都在变化。改变每次我的意思是允许用户选择任何过滤器。
例如;在一种情况下,用户可以选择BTypeKey和/或BCKey和/或Rkey,他们可以选择任何过滤器或不选择过滤器。
现在我可以过滤基于“固定”列的dResult,但我不知道如何在动态过滤器上进行过滤?或者我可以如何使用linq来做到这一点?
任何帮助将非常感激,因为我挣扎着。
在代码方面至今我还只是FilterList因为这
FilterParameters filterlist = new FilterParameters();
filterlist.Add(new FilterParameter(this._BuildSequence, this._BuildSequenceName, FilterParameterTypes.Guid, FilterComparisonTypes.BuildSequence));
filterlist.Add(new FilterParameter(this._BCKey, this._BComponentName, FilterParameterTypes.Guid, FilterComparisonTypes.BCKey));
filterlist.Add(new FilterParameter(this._BTypeKey, base.BTypeName, FilterParameterTypes.Guid, FilterComparisonTypes.BTypeKey));
return filterlist;
感谢
你是否在'C#DataTable Filter'上做过谷歌搜索? [MSDN DataTable.Select Method()](https://msdn.microsoft.com/en-us/library/det4aw50%28v=vs.110% 29.aspx) – MethodMan 2015-02-05 17:53:24
@MethodMan是的,我做了,但我的问题仍然在动态与固定。就像我将如何表达过滤一样。指导将不胜感激 – user2726374 2015-02-05 18:00:47
你可以显示一些代码,你正在做什么..我很确定这可以通过使用变量来完成..如果没有,那么我会建议创建一个实现/利用'ISNULL'检查的存储过程,并且你可以建立你的查询/过滤,这样我不知道你是否也可以通过创建一个'enum'并通过获取字符串名称的枚举..我需要看看你目前正在试图看看我的建议是否会工作.. – MethodMan 2015-02-05 18:03:36