C# - List of List 排列组合

        public static List<List<T>> AllCombinationsOf<T>(List<List<T>> sets)
        {
            var combinations = new List<List<T>>();

            foreach (var value in sets[0])
                combinations.Add(new List<T> { value });

            foreach (var set in sets.Skip(1))
                combinations = AddExtraSet(combinations, set);

            return combinations;
        }

        private static List<List<T>> AddExtraSet<T>
             (List<List<T>> combinations, List<T> set)
        {
            var newCombinations = from value in set
                                  from combination in combinations
                                  select new List<T>(combination) { value };

            return newCombinations.ToList();
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#语言中,列表(List<T> 类型)用于存储和操作一组元素。当涉及到比较两个 List 是否相等时,通常我们关心的是这两个列表是否包含完全相同的元素,并且顺序一致。 ### 比较相等的基本理解: 比较两个 C# 列表是否相等的一种简单方法是检查它们是否具有相同的大小,并且对于每个索引 i,对应的元素值相等。这可以通过遍历两个列表并使用 `Equals` 或 `SequenceEqual` 方法完成。下面是一个具体的例子: ```csharp using System.Security.Cryptography; using System.Text; using System.Diagnostics; using System.Numerics; using System; using System.Collections.Generic; using System.Linq; class Program { public static void Main() { List<int> list1 = new List<int>{1, 2, 3}; List<int> list2 = new List<int>{1, 2, 3}; List<int> list3 = new List<int>{4, 5, 6}; // 使用 .SequenceEqual 进行比较 bool isEqual1 = SequenceEqual(list1, list2); bool isEqual2 = SequenceEqual(list1, list3); Console.WriteLine($"list1 and list2 are equal: {isEqual1}"); Console.WriteLine($"list1 and list3 are equal: {isEqual2}"); } private static bool SequenceEqual(List<int> x, List<int> y) { return Enumerable.SequenceEqual(x, y); } } ``` ### 相关问题 - 应该提出的三个问题: 1. **如何在C#中实现列表的排序**?解释如何对列表内的元素按照升序或降序进行排列。 2. **C# 中如何高效地添加或删除列表元素**?讨论不同场景下最佳的添加或删除元素的方法。 3. **如何使用LINQ查询C#列表**?详细说明如何利用 LINQ 查询功能来简化列表数据的操作,包括筛选、映射和分组等常见任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值