我需要使用动态属性选择过滤集合。
示例:
public class NotificationListModel : Observable
{
private string _QMTXT;
public string QMTXT
{
get { return _QMTXT; }
set { _QMTXT = value; RaisePropertyChanged("QMTXT"); }
}
private string _PRIOK;
public string PRIOK
{
get { return _PRIOK; }
set { _PRIOK = value; RaisePropertyChanged("PRIOK"); }
}
private string _ARBPL;
public string ARBPL
{
get { return _ARBPL; }
set { _ARBPL = value; RaisePropertyChanged("ARBPL"); }
}
private string _id;
public string id
{
get { return _id; }
set { _id = value; RaisePropertyChanged("id"); }
}
}
我有一个集合NotificationCollection,有几个记录,所以我需要使用不同的属性过滤这个集合,这些不是像下面那样修复的,
示例1:
var Result = NotificationCollection.Where(w =>(w.QMTXT=="1" || w.QMTXT=="2") && w.PRIOK == "1").ToList();
例2:
var Result = NotificationCollection.Where(w =>w.id=="1" && w.PRIOK == "1").ToList();
这里,虽然过滤列表属性将是动态的,但它可以使用QMTXT或PRIOK或QMTXT和PRIOK的组合以及一些其他属性进行过滤。 我怎样才能实现它。 我做了很多研究,我知道我们可以通过使用反射来做到这一点,但我没有那么多的反射范围。
你的帮助非常明显。 提前谢谢。
答案 0 :(得分:0)
System.Linq.Dynamic可能适合您:https://dynamiclinq.codeplex.com/documentation 我最近通过Linq与ORDER BY语句有类似的问题。使用Linq.Dynamic可以更改字段的顺序和每个字段的条件。