编程语言
首页 > 编程语言> > 具有动态LINQ的C#布尔逻辑?

具有动态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