具有动态LINQ的C#布尔逻辑?
作者:互联网
我一直在努力完成以下任务:
假设我有一个包含名称和值的列表(例如Dictionary).我需要为Web界面的用户提供一个字段,他可以在其中编写查询,以检查该列表上是否存在特定名称和值.
例如,我有以下列表:
A = 2, B = 4, D = 0
用户想要这样查询此列表(不要介意语法,这只是一个伪代码)
> A == 2&& D =>这将返回true,因为A存在并且其值为2并且D也存在.
>(A&&B)|| C =>这将返回true,因为列表中同时存在A和B.
>一个&& B =>这将返回false,因为A存在于列表中,但B也存在(但B不应该存在)
我一直在研究动态LINQ,但似乎一次只能评估一个对象(无法检查列表中是否存在对象,然后询问是否不存在).
有谁知道有用的材料或链接?
谢谢
解决方法:
不确定我是否理解您的要求…
这是您要的吗?
Dictionary<string, int> nameValuePairs = new Dictionary<string, int>();
nameValuePairs.Add("A", 2);
nameValuePairs.Add("B", 4);
nameValuePairs.Add("D", 0);
//A == 2 && D => this returns true, as A exists and it's value is 2 and D also exists
int d = 0;
if (nameValuePairs.ContainsKey("A") && nameValuePairs.TryGetValue("D", out d) && nameValuePairs.ContainsKey("D"))
{
Console.WriteLine("Test 1: True");
}
else
{
Console.WriteLine("Test 1: False");
}
//(A && B) OR C => this returns true, as both A and B exists on the list
if ((nameValuePairs.ContainsKey("A") && nameValuePairs.ContainsKey("B")) || nameValuePairs.ContainsKey("C"))
{
Console.WriteLine("Test 2: True");
}
else
{
Console.WriteLine("Test 2: False");
}
//A && !B => this returns false, as A exists on the list but B as well (but B shouldn't)
if (nameValuePairs.ContainsKey("A") && !nameValuePairs.ContainsKey("B"))
{
Console.WriteLine("Test 3: True");
}
else
{
Console.WriteLine("Test 3: False");
}
标签:linq-to-objects,linq,c,net 来源: https://codeday.me/bug/20191119/2033607.html