gpt4 book ai didi

c# - Linq InsertAllOnSubmit 如果不存在

转载 作者:太空狗 更新时间:2023-10-30 01:17:26 24 4
gpt4 key购买 nike

如果不存在我正在做的记录,则插入:

using(MyDataContext db = new MyDataContext())
{
for(int i=0 i<Items.Length;i++)
{
if(!db.Items.Any(item=> item.name == Items[i].name)
db.Items.InsertOnSubmit(Items[i]);
}
db.SubmitChanges();
}

我知道我也可以一个一个地检查这些项目并将不存在的项目插入另一个列表,然后在最后使用 InsertAllOnSubmit() 插入所有项目,但这并不能解决我的问题问题要么是因为我要检查数千个项目并且我不想执行thoughand查询来检查这些项目。有没有办法以仅插入不存在的项目的方式使用 InsertAllOnSibmit?

编辑:我没有义务使用 Linq,如果有人知道通过存储过程或任何其他方式更好地执行此操作,我非常感谢您分享。

最佳答案

一个查询找出需要插入的内容,然后在一些内存操作之后,您可以InsertAllOnSubmit:

using(MyDataContext db = new MyDataContext())
{
var itemNames = Items.Select(i=>i.name).ToList();
var itemNamesInDb = db.Items.Where(i=>itemNames.Contains(i.Name)).Select(i=>i.Name).ToList();
var itemNamesNotInDb = new HashSet<string>(itemNames.Except(itemNamesInDb));
var itemsNotInDb = Items.Where(i=>itemNamesNotInDb.Contains(i.name)).ToList();

db.Items.InsertAllOnSubmit(itemsNotInDb);
db.SubmitChanges();
}

关于c# - Linq InsertAllOnSubmit 如果不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31754190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com