我有一个如下所示的模型。
public class ProcessData
{
public Int32 ProcessDataId { get; set; }
public string routenumber { get; set; }
public string representative { get; set; }
public string Ischecked { get; set; }
}
我用数据填充了这个
一个。 List<ProcessData> objMainData
- 主要数据包括大约40行数据
B中。 List<ProcessData> Manipulated data
- 这主要数据有一些修改。我更改了2个字段的数据,比如10行
我想把B和A合并。我希望A拥有我在B中做的修改的完整数据。这可能吗?
假设这是我的数据如下。我怎么把它放在一起?
public class Collectiondata
{
public List<ProcessData> Objmaindata()
{
List<ProcessData> objMain = new List<ProcessData>();
objMain.Add(new ProcessData() { ProcessDataId=1,routenumber="2001",representative="James",Ischecked=""});
objMain.Add(new ProcessData() { ProcessDataId=2,routenumber="2002",representative="John",Ischecked=""});
objMain.Add(new ProcessData() { ProcessDataId=3,routenumber="2003",representative="",Ischecked=""});
objMain.Add(new ProcessData() { ProcessDataId=4,routenumber="2004",representative="Bassey",Ischecked=""});
objMain.Add(new ProcessData() { ProcessDataId=5,routenumber="2005",representative="Adams",Ischecked="" });
return objMain;
}
public List<ProcessData> ManipulatedData()
{
List<ProcessData> objMain = new List<ProcessData>();
objMain.Add(new ProcessData() { ProcessDataId = 1, routenumber = "3001", representative = "Sumbo", Ischecked = "Y" });
objMain.Add(new ProcessData() { ProcessDataId = 2, routenumber = "2002", representative = "Folabi", Ischecked = "Y" });
objMain.Add(new ProcessData() { ProcessDataId = 3, routenumber = "3035", representative = "James", Ischecked = "Y" });
return objMain;
}
}
答案 0 :(得分:0)
为您的类创建一个实现IEqualityComparer<T>
public class ProcessDataComparer : IEqualityComparer<ProcessData>
{
public bool Equals(ProcessData x, ProcessData y)
{
return x.ProcessDataId.Equals(y.ProcessDataId);
}
public int GetHashCode(ProcessData obj)
{
return obj.ProcessDataId;
}
}
然后您可以使用linq .Union()
合并2个列表
var mergedList = manipulatedData.Union(objMainData, new ProcessDataComparer());
合并列表首先包括来自manipulatedData的项目,然后是来自objMainData
的项目,这些项目没有ProcessDataId
与manipulatedData
中的项目之一相匹配。请注意,因为它们现在不合规,所以您可能希望在上述查询的末尾添加.OrderBy(x => x.ProcessDataId)
子句。