- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果不存在我正在做的记录,则插入:
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/
今天,当我尝试导入多个数据记录时,我注意到我的导入服务中有一个奇怪的行为。 当我这样做时,所有数据记录都被导入并且自动递增值是正确的(see screenshot): public void Crea
如果不存在我正在做的记录,则插入: using(MyDataContext db = new MyDataContext()) { for(int i=0 i item.name == Ite
我试图理解这两者之间的区别,并且真的需要一个简单的解释性示例。 提前致谢.. 最佳答案 有一个 good Q&A关于这个在 MSDN 论坛上。最有趣的一点: InsertAllOnSubmit() s
我们知道 Linq-To-Sql InsertAllOnSubmit 在性能方面很糟糕,但是使用 SqlBulkCopy 进行批量插入需要一些编码。有没有人发现在 InsertAllOnSubmit
我可以通过再次调用 InsertAllOnSubmit() 恢复从 DeleteAllOnSubmit() 中删除的对象吗?还是相反? 最佳答案 您可以通过调用检索原始值: GetOriginalEn
假设我有: using (SomeDataContext db = new SomeDataContext()) { foreach(Item i in Items) {
两者在性能上是否有很大差异,例如我有这两个代码片段: public void Insert(IEnumerable geofences) { var insertGeofences = new
我是一名优秀的程序员,十分优秀!