最简单的方法是将C#中的两个列表与LINQ进行比较,并将缺少的项添加到实体类中

时间:2017-01-13 11:46:14

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

我的C#应用​​程序中有两个列表,如以下(名称):

List<String[]> list = new ArrayList<>();
Pattern pattern = Pattern.compile("\\s+");
while ((line = bufferedReader.readLine()) != null) {
    list.add(pattern.split(line, -1));
}
String[][] mazeNew = list.toArray(new String[0][0]);

TransactionDetails类型的prepard列表包含我需要在DBList中添加的缺失项。

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

- prepared
- DBList

我的DBList有:

TransactionID

1
2
3
4
5
6
7
8
9

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

这是我到目前为止所做的:

TransactionID 
1
2
3
4
5
6

但是newList列表由于某种原因总是空的。我该怎么做呢?

编辑,DBList项目的输出将是:

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

1 个答案:

答案 0 :(得分:3)

您可以使用LINQ:

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