【问题标题】:Compare two list Items using LINQ使用 LINQ 比较两个列表项
【发布时间】:2015-05-16 13:29:12
【问题描述】:

我有一个具有以下属性的对象

public class Name
{
    public string FirstName 
    {
        get;
        set;
    }
    public string LastName
    {
        get;
        set;
    }

}

我得到一个名称对象列表作为 NameList 其中包含两个对象作为项目

我想比较列表中的这两个对象以获取具有相同 FirstName 的对象。过去 2 小时我一直在寻找解决方案。

在名称对象列表中,我得到两个名称对象

列表项 1:名字:史蒂夫; 姓氏:罗杰斯;

列表项 2: 名字:史蒂夫; 姓氏:大卫;

我想要将这些与列表项进行比较,检查名字属性是否相同

【问题讨论】:

  • 您能否提供一个数据示例您的问题不太清楚。你是说你有 List 只包含两个 Name 对象?目前尚不清楚“获取具有相同名字的对象”是什么意思,因为单个对象不能具有“相同的名字”(与什么相同?)
  • 据我了解,我认为您有一个列表,并且您想检查该列表中具有相同名称的项目。所以你应该尝试分组...
  • 我已经更新了这个问题。请检查并告诉我
  • @Eterm 我认为他有一个包含一些Name 对象的列表。他想获取与另一个 Listitem 具有相同 FirstName 的所有 Name 对象
  • @西蒙。这正是我正在寻找的。​​span>

标签: c# linq


【解决方案1】:

如果您希望获取所有具有相同名字的对象,您应该使用 GroupBy:

var groups = NameList.GroupBy(li => li.FirstName);

【讨论】:

    【解决方案2】:

    您想查找所有重复项。

    var duplicates = NameList.GroupBy(o => o.FirstName).Where(g => g.Skip(1).Any()).SelectMany(g => g);  
    

    【讨论】:

    • 好像你理解错了:) OP 做了一个编辑,检查一下
    • 请查看更新后的问题。希望您理解查询
    • @Simon 更新了答案以获取所有具有重复名字的对象。
    • @Midhun 请查看更新的解决方案。这将获取所有重复项。
    • 抱歉再次询问.. 有没有办法检查前一个列表项?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多