C# 基于公共列在列表2的第2列的列表1的第1列中插入值
清单1: 清单2:C# 基于公共列在列表2的第2列的列表1的第1列中插入值,c#,asp.net,list,linq,join,C#,Asp.net,List,Linq,Join,清单1: 清单2: | User Id | Latest | +---------------------+------------------+ | 1 | 1 | | 2 | 3 | | 3 | 3 | | 4 |
| User Id | Latest |
+---------------------+------------------+
| 1 | 1 |
| 2 | 3 |
| 3 | 3 |
| 4 | 0 |
我想将List1
的Latest
列的值插入List2
的Latest
列,这是基于连接/比较两个列表中User Id
列的值
我可以使用foreach循环,但我想那会运行n*m,看起来很难看。有没有一种方法可以使用LINQ或高效地实现这一点
问候。
朱奈德试试这样。这可以通过将最新值从列表1添加到列表2来解决您的问题
var result = from i1 in List1
join i2 in List2
on i1.UserId equals i2.UserId
select new
{
i2.UserId,
i1.Latest,
i2.Rating
};
试试这样的。这可以通过将最新值从列表1添加到列表2来解决您的问题
var result = from i1 in List1
join i2 in List2
on i1.UserId equals i2.UserId
select new
{
i2.UserId,
i1.Latest,
i2.Rating
};
您可以使用
LINQ
:
请尝试以下代码:
List2.AddRange(List1.Select(user => new List1{
Latest = user.Latest,
UserID = user.UserID
}));
请注意,
Latest
必须是null
您可以使用LINQ
:
请尝试以下代码:
List2.AddRange(List1.Select(user => new List1{
Latest = user.Latest,
UserID = user.UserID
}));
请注意,Latest
必须是可空的
LINQ永远不会改变任何源序列,它只能从中提取数据
您必须枚举提取的数据以更新原始表
List2.ForEach(item1 =>
{
item1.Latest = List1.FirstOrDefault(item2 => item2.UserId == item1.UserId)?.Latest;
});
我不知道你是怎么更新记录的。实体框架?SQL?它将是这样的:
var recordsToUpdate = List2.Join(List1, // join List2 and List1
list2Row => list2Row.UserId, // from every row in List2 take UserId
list1Row => list1Row.UserId, // from every row in List1 take UserId
(list2Row, list1Row) => new // when they match make one new object
{
Id = list2Row.UserId, // take UserId from list2
Latest = list1Row.Latest, // take Latest from list1
Rating = list2Row.Rating, // take Rating from list2
})
.ToList(); // execute the query
LINQ永远不会改变任何源序列,它只能从中提取数据
您必须枚举提取的数据以更新原始表
List2.ForEach(item1 =>
{
item1.Latest = List1.FirstOrDefault(item2 => item2.UserId == item1.UserId)?.Latest;
});
我不知道你是怎么更新记录的。实体框架?SQL?它将是这样的:
var recordsToUpdate = List2.Join(List1, // join List2 and List1
list2Row => list2Row.UserId, // from every row in List2 take UserId
list1Row => list1Row.UserId, // from every row in List1 take UserId
(list2Row, list1Row) => new // when they match make one new object
{
Id = list2Row.UserId, // take UserId from list2
Latest = list1Row.Latest, // take Latest from list1
Rating = list2Row.Rating, // take Rating from list2
})
.ToList(); // execute the query
到目前为止你试过什么?您为什么不通过向我们提供您的样本数据和相应的结果?并且您希望将列表2保存到数据库中?请勾选正确答案您迄今为止尝试了什么?为什么不通过将示例数据和相应的结果一起提供给我们?并且您希望将列表2保存到数据库中?请勾选正确答案