使用Linq将List <String>与重复信息进行比较

测验

为了比较两者List<String>并提取它们之间的差异,我使用了Linq's Except

即:

说我想使用Linq比较以下两个列表的相等性:

List1 = "0,1,2,2,3"
List2 = "0,1,2,3"

List<string> differences1 = List1.Except(List2).ToList();
List<string> differences2 = List2.Except(List1).ToList();

differences1并且两个列表中differences2都没有项目2,但是两个列表相等。我希望能够提取列表之间的所有差异,包括一个重复的信息,而另一个则没有。

提取两个List<string>对象之间所有差异的最佳方法是什么?

务实的

因此,您要寻找的是一种Except适用于手提袋而不是套装的背包。因此,如果一个序列具有一个项目的2个副本,而您将一个副本减去一个副本集,则应该只剩下一个副本,而不是像执行减法操作一样,先将所有序列简化为不同的集合Except

这使它的处理起来不太优雅,但是仍然不可怕。无需使用aHashSet来代表另一个集合中的项目,您只需要有一个字典即可将项目映射到副本数。然后,对于每个项目,如果它在字典中,请从计数中删除一个,并且不产生它;如果它不在字典中,则应产生它。

public static IEnumerable<T> BagDifference<T>(IEnumerable<T> first
    , IEnumerable<T> second)
{
    var dictionary = second.GroupBy(x => x)
        .ToDictionary(group => group.Key, group => group.Count());

    foreach (var item in first)
    {
        int count;
        if (dictionary.TryGetValue(item, out count))
        {
            if (count - 1 == 0)
                dictionary.Remove(item);
            else
                dictionary[item] = count - 1;
        }
        else
            yield return item;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Linq将List <String>与重复信息进行比较

来自分类Dev

将两个字符串拆分为 List<string> 并使用 Linq 进行比较

来自分类Dev

使用LinQ进行C#List <List <string >>过滤

来自分类Dev

Mips,将输入中使用的String与存储的String进行比较

来自分类Dev

Mips,将输入中使用的String与存储的String进行比较

来自分类Dev

如何将arraylist与list <string []> java进行比较

来自分类Dev

通过对重复信息进行分组从列表创建对象

来自分类Dev

如何根据连接或重复信息对行进行分组?

来自分类Dev

如何使用LINQ将<string,list <string >>减少为<string,string>?

来自分类Dev

如何将String与Int进行比较

来自分类Dev

Android:将JSON数据与String进行比较

来自分类Dev

如何将String与HashMap进行比较

来自分类Dev

嵌套链与重复信息

来自分类Dev

合并重复信息

来自分类Dev

在C#中使用LINQ比较两个List <string>

来自分类Dev

使用Linq查询List <List <string >>

来自分类Dev

使用linq将List <List <T >>转换为List <T>删除重复项

来自分类Dev

比较两个List <string>并打印重复项

来自分类Dev

在LINQ中使用string []数组进行GroupBy

来自分类Dev

如何使用比较器将String转换为int并进行比较

来自分类Dev

如何将List <string>中的值与Project.Models.Class进行比较?

来自分类Dev

如何将数据表转换为list <string>,然后将其与Textbox值进行比较?

来自分类Dev

如何使用LINQ从List <string> []获取数据

来自分类Dev

如何正确地将std :: string与“”进行比较?

来自分类Dev

无法将 xs:string 与 xs:integer 进行比较

来自分类Dev

以 FP 方式将 ArrayBuffer[Array[String]] 与 Scala 进行比较

来自分类Dev

WordPress,foreach内部foreach,重复信息

来自分类Dev

vue 动态组件,重复信息

来自分类Dev

使用equals删除List <String>重复项

Related 相关文章

  1. 1

    使用Linq将List <String>与重复信息进行比较

  2. 2

    将两个字符串拆分为 List<string> 并使用 Linq 进行比较

  3. 3

    使用LinQ进行C#List <List <string >>过滤

  4. 4

    Mips,将输入中使用的String与存储的String进行比较

  5. 5

    Mips,将输入中使用的String与存储的String进行比较

  6. 6

    如何将arraylist与list <string []> java进行比较

  7. 7

    通过对重复信息进行分组从列表创建对象

  8. 8

    如何根据连接或重复信息对行进行分组?

  9. 9

    如何使用LINQ将<string,list <string >>减少为<string,string>?

  10. 10

    如何将String与Int进行比较

  11. 11

    Android:将JSON数据与String进行比较

  12. 12

    如何将String与HashMap进行比较

  13. 13

    嵌套链与重复信息

  14. 14

    合并重复信息

  15. 15

    在C#中使用LINQ比较两个List <string>

  16. 16

    使用Linq查询List <List <string >>

  17. 17

    使用linq将List <List <T >>转换为List <T>删除重复项

  18. 18

    比较两个List <string>并打印重复项

  19. 19

    在LINQ中使用string []数组进行GroupBy

  20. 20

    如何使用比较器将String转换为int并进行比较

  21. 21

    如何将List <string>中的值与Project.Models.Class进行比较?

  22. 22

    如何将数据表转换为list <string>,然后将其与Textbox值进行比较?

  23. 23

    如何使用LINQ从List <string> []获取数据

  24. 24

    如何正确地将std :: string与“”进行比较?

  25. 25

    无法将 xs:string 与 xs:integer 进行比较

  26. 26

    以 FP 方式将 ArrayBuffer[Array[String]] 与 Scala 进行比较

  27. 27

    WordPress,foreach内部foreach,重复信息

  28. 28

    vue 动态组件,重复信息

  29. 29

    使用equals删除List <String>重复项

热门标签

归档