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但我们能做的最多就是把问题标记为已解决并投票:)很高兴这有帮助