c# - 使用 LINQ 比较 C# 中的两个列表并将缺失项添加到实体类的最简单方法

标签 c# asp.net asp.net-mvc linq compare

我的 C# 应用程序中有两个列表(名称):

- prepared
- DBList

TransactionDetails 类型的准备列表包含缺少的项目,我需要在 DBList 中添加这些项目。

例如,如果我在准备好的列表中有这些项目,如下所示:

TransactionID

1
2
3
4
5
6
7
8
9

我的 DBList 有:

TransactionID 
1
2
3
4
5
6

我想比较这两个列表,找到不在 DBList 中的匹配 TransactionID,然后将它们添加到 DBList。之后,我将清除准备好的列表并将更改保存在数据库中;

这是我目前所做的:

var newList = prepared.Intersect(DBList).ToList();
prepared.Clear();
ctx.EbayUserTransactions.AddRange(newList);
ctx.SaveChanges();

但是由于某种原因 newList 列表总是空的。我怎样才能正确地做到这一点?

编辑,DBList 项的输出将是:

  TransactionID

    1
    2
    3
    4
    5
    6
    7
    8
    9

最佳答案

您可以使用 LINQ:

DBList.AddRange(prepared.Where((i) => DBList.FindIndex((el) => el.Transaction.ID == i.TransactionID) == -1));

关于c# - 使用 LINQ 比较 C# 中的两个列表并将缺失项添加到实体类的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41633948/

相关文章:

c# - 从 XML 中读取第一个根节点

c# - 基于原始 SDK 的 kinect 数据需要什么校正数学

asp.net - 将复选框组存储在@Html.HiddenFor中

c# - 我在从两个外键引用到两个不同表的复合键中出错

c# - ASP.NET MVC : Order of execution of ValueProviders

c# - asp.net mvc 在 ActionResult 中多次循环后什么都不做

c# - Xamarin iOS - 屏幕流程

c# - 创建骨架 WiX 扩展时失败

asp.net - 通过 responseMode ="ExecuteURL"清除 HttpContext.Current.Items ?

c# - 如何使用 mvc 4 web api 中的 HttpResponseMessage 对象设置 etag?