C# 从不同的值合并列表中的项

C# 从不同的值合并列表中的项,c#,linq,C#,Linq,我有以下型号: class serverMaster { public string vm { get; set; } public string bm { get; set; } public string incrday { get; set; } public string incrtime { get; set; } public string fullday { get; set; } public string fulltime { g

我有以下型号:

class serverMaster
{
    public string vm { get; set; }
    public string bm { get; set; }
    public string incrday { get; set; }
    public string incrtime { get; set; }
    public string fullday { get; set; }
    public string fulltime { get; set; }
    public string backupgroup { get; set; }
    public serverMaster(string vm1, string bm1, string incrday1, string incrtime1, string fullday1, string fulltime1, string backupgroup1)
    {
        vm = vm1;
        bm = bm1;
        incrday = incrday1;
        incrtime = incrtime1;
        fullday = fullday1;
        fulltime = fulltime1;
        backupgroup = backupgroup1;

    }
}
我有这样一个数据集:

如何使用Linq在第一列中查找重复项(例如merge-ether)并连接其他字段

理想情况下,我希望看到这样的输出:


您要做的是在键字段上执行
GroupBy
(根据您的注释和模型,我假设它是
vm
),然后对其他字段执行聚合操作。从示例数据中,您要连接字符串:

var result = allItems.GroupBy(item => item.vm)
                     .Select(group => new serverMaster {
                         vm = group.Key,
                         incrday = string.Join(", ", group.Select(i => i.incrday)),
                         incrtime = string.Join(", ", group.Select(i => i.incrtime)),
                         fullday = string.Join(", ", group.Select(i => i.fullday)),
                         fulltime = string.Join(", ", group.Select(i => i.fulltime)),
                         backupgroup = string.Join(", ", group.Select(i => i.backupgroup))
                     }).ToList();

由于没有默认构造函数,您应该:

var result = allItems.GroupBy(item => item.vm)
                     .Select(group => new serverMaster (
                         group.Key,
                         string.Join(", ", group.Select(i => i.incrday)),
                         string.Join(", ", group.Select(i => i.incrtime)),
                         string.Join(", ", group.Select(i => i.fullday)),
                         string.Join(", ", group.Select(i => i.fulltime)),
                         string.Join(", ", group.Select(i => i.backupgroup))
                     )).ToList();

你可以看一下:

我想你需要看一下MoreLinq软件包,它有.distinct功能。我想linq也有.distinct。distinct是我的意思。对不起,这是一个打字错误,你也可以看一下。看起来你遇到了类似的情况。我应该补充一点,我正在尝试从一个列表中合并,而不是从两个列表中合并列表。看起来不错,但是这里的代码“group=>new serverMaster”要求我传递参数。我要添加参数吗?@JoshHilditch-oh true。这是因为你没有一个默认构造函数,而是一个获取所有参数的构造函数。我会更新我的答案,但我建议使用对象初始值设定项,而不是构造函数“没有给出与所需的形式参数'vm1'os serverMaster相对应的参数。这就是我得到的。哦,好吧。Sweet:)@JoshHilditch-哈哈:)我有时也希望如此;p但我们能做的最多就是把问题标记为已解决并投票:)很高兴这有帮助