Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在变量中存储数学运算符_C#_Linq_Mvvm_Collectionview - Fatal编程技术网

C# 在变量中存储数学运算符

C# 在变量中存储数学运算符,c#,linq,mvvm,collectionview,C#,Linq,Mvvm,Collectionview,我正在用C#MVVM创建一个应用程序。我有一个简单的问题。是否有可能将数学运算符存储在变量中?我有这样一个代码: public ICollectionView FilteredCollection { get { return filteredCollection; } set

我正在用C#MVVM创建一个应用程序。我有一个简单的问题。是否有可能将数学运算符存储在变量中?我有这样一个代码:

public ICollectionView FilteredCollection
            {
                get
                {
                    return filteredCollection;
                }
                set
                {
                    filteredCollection = value;
                    OnPropertyChanged("FilteredCollection");
                }
            }



 FilteredCollection.Filter = x => (
                    (string.IsNullOrEmpty(DynamicSearchEmployeeName) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeName))
                    && (DynamicSearchEmployeeID == null || ((Employee)x).EmployeeID == DynamicSearchEmployeeID)
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeSalary) || ((Employee)x).EmployeeSalary == Convert.ToInt32(DynamicSearchEmployeeSalary))
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeDesigner) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeDesigner))
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeEmailID) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeEmailID))
                    );
我想要达到的目标: 在第四行(DynamicSearchEmployeeSalary)中,数学运算符应取决于以下条件:

if (IsPressedEqual == true)
VARIABLE = "=="
if (IsPressedLess == true)
VARIABLE = "<"
if (IsPressedGreater == true)
VARIABLE = ">"
if (IsPressedLess == true && IsPressedEqual == true)
VARIABLE = "<="
if (IsPressedGreater == true && IsPressedEqual == true)
VARIABLE = ">="

我已经做了一个简单的基于规则的引擎。。。我想这会对你的问题有所帮助

请在此处以nuget软件包的形式查找:

您可以创建如下规则:

var rule = RuleEngine.CreateRule<Employee>()
                     .If<Employee>(e => e.EmployeeSalary).GreaterThan(DynamicSearchEmployeeSalary)
                     .Validate();

FilteredCollection.Filter = x => (
                    (string.IsNullOrEmpty(DynamicSearchEmployeeName) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeName))
                    && (DynamicSearchEmployeeID == null || ((Employee)x).EmployeeID == DynamicSearchEmployeeID)
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeSalary) || rule.Match((Employee)x).IsMatch)
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeDesigner) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeDesigner))
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeEmailID) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeEmailID))
var rule=RuleEngine.CreateRule()
.If(e=>e.EmployeeSalary).大于(DynamicSearchEmployeeSalary)
.Validate();
FilteredCollection.Filter=x=>(
(string.IsNullOrEmpty(DynamicSearchEmployeeName)| |((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeName))
&&(DynamicSearchEmployeeID==null | |((Employee)x).EmployeeID==DynamicSearchEmployeeID)
&&(string.IsNullOrEmpty(DynamicSearchEmployeeSalary)| | rule.Match((Employee)x.IsMatch)
&&(string.IsNullOrEmpty(DynamicSearchEmployeeDesigner)| |((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeDesigner))
&&(string.IsNullOrEmpty(DynamicSearchEmployeeEmailID)| |((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeEmailID))

请随意添加任何注释或对包作出贡献

您打算如何在查询中使用它?什么是
FilteredCollection
?您能否显示在理想情况下运算符的使用位置?您不能单独存储运算符,但:您可以组合查询-用于LINQ和to对象(
IEnumerable
)和LINQ to-(随便什么)(
IQueryable
)-您可以非常灵活地构建表达式树(通过使用典型编译器解释结构的替代构造语法).那么:您将如何使用它?这对任何答案都会产生巨大影响。我认为您不会自行存储变量,但您确实可以存储…第二个Patrick提出的问题…这些查询将在何处运行?本地作为LINQ2对象,还是将它们转换为Linq2EF/Linq2Sql?我编辑了我的问题。
var rule = RuleEngine.CreateRule<Employee>()
                     .If<Employee>(e => e.EmployeeSalary).GreaterThan(DynamicSearchEmployeeSalary)
                     .Validate();

FilteredCollection.Filter = x => (
                    (string.IsNullOrEmpty(DynamicSearchEmployeeName) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeName))
                    && (DynamicSearchEmployeeID == null || ((Employee)x).EmployeeID == DynamicSearchEmployeeID)
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeSalary) || rule.Match((Employee)x).IsMatch)
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeDesigner) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeDesigner))
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeEmailID) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeEmailID))