我试图返回一个列表,其中包含属性设置值的次数。

我正在尝试执行此操作,而不必对要查找的值进行硬编码,因此,如果后端发生了某些更改,则无需添加新的代码行。

目前,我可以使用它,但是我已经手动设置了值。

listCounts.Add(testList.Count(item => item.title == "Blah"));
listCounts.Add(testList.Count(item => item.title == null));
listCounts.Add(testListt.Count(item => item.title == "test"));
listCounts.Add(testList.Count(item => item.title == "Blarg"));


目前可以使用,但是如果遇到任何问题,我必须进入并更改代码,这就是我要避免的代码

最佳答案

取决于您实际上要做什么。看起来您想要这些键(标题)的数量吗?

一种方法是按标题分组以提供计数,例如。

var listCounts = testList.GroupBy(item => item.title);


作为使用此示例:

    class Item
    {
        public string title;
    }

    static void Main(string[] args)
    {
        var testList = new List<Item>
        {
            new Item { title = "Blah" },
            new Item { title = "Blah" },
            new Item { title = "Blah" },
            new Item { title = null },
            new Item { title = null },
            new Item { title = "test" },
            new Item { title = "test" },
            new Item { title = "test" },
            new Item { title = "test" }
        };


        var listCounts = testList.GroupBy(item => item.title);

        foreach (var count in listCounts)
        {
            Console.WriteLine("{0}: {1}", count.Key ?? string.Empty, count.Count());
        }

        Console.ReadKey();

    }


缺点是您每次都要计数-就像我说的那样,这取决于您要实现的目标。一个简单的更改将使它成为一个假名(字符串,整数),其中每个标题将是一个键,而值将是标题出现的次数。

编辑

要使用字典,请将listCounts行更改为:

var listCounts = testList.GroupBy(t => t.title).ToDictionary(i => i.Key ?? string.Empty, i => i.Count());


(请注意,键不能为空,因此i.Key ?? string.Empty解决方法应适合您的用途)

关于c# - 返回字符串作为属性出现在自定义对象列表中的次数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39751992/

10-11 01:25