gpt4 book ai didi

c# - 如何按 IEnumerable 属性中的值分组

转载 作者:太空狗 更新时间:2023-10-30 00:34:38 25 4
gpt4 key购买 nike

我有一个看起来像这样的类

public class TestCase
{
public IEnumerable<string> Categories { get; private set; }
}

我有一个 TestCase 对象列表,我希望能够按类别对其进行分组,这样,如果一个 TestCase 在该测试用例的实例所在的类别中具有值“a”和“b” “a”的分组和“b”的分组。我对 Linq 的 GroupBy 的理解使我相信它会使用 IEnumerable 的 Equals 方法,如果我按类别分组,我会为我的每个测试用例得到一个完全不同的组。

我有一个暴力解决方案可以实现我想要的分组

var categoryGroups = new Dictionary<string, List<TestCase>>();

foreach (var testCase in testPackage.TestCase)
{
foreach (var category in testCase.Categories)
{
if (!categoryGroups.ContainsKey(category))
{
categoryGroups.Add(category, new List<TestCase>());
}

categoryGroups[category].Add(testCase);
}
}

但这很丑陋。有没有更好的方法来获得我想要的分组?

最佳答案

如果您使用以下 LINQ 查询:

var result = from testCase in testCases
from category in testCase.Categories
group testCase by category into g
select g;

对于像这样的一组 TestCase 对象:

TestCase "X": Categories "A", "B", "C"
TestCase "Y": Categories "C", "B", "D"

然后您将获得每个不同类别的 TestCase 对象,如下所示:

Category "A": TestCases "X"
Category "B": TestCases "X", "Y"
Category "C": TestCases "X", "Y"
Category "D": TestCases "Y"

关于c# - 如何按 IEnumerable 属性中的值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7096762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com