跟进至this question。我有以下代码:Linq to SQL:查询不查看未完成的更改
string[] names = new[] { "Bob", "bob", "BoB" };
using (MyDataContext dataContext = new MyDataContext())
{
foreach (var name in names)
{
string s = name;
if (dataContext.Users.SingleOrDefault(u => u.Name.ToUpper() == s.ToUpper()) == null)
dataContext.Users.InsertOnSubmit(new User { Name = name });
}
dataContext.SubmitChanges();
}
...并插入所有三个名称(“Bob”,“bob”和“BoB”)。如果这是Linq-to-Objects,它不会。
我可以让它看看待处理的更改以及表中已有的内容吗?
我不能使用names.Distinct,因为名称(在我的真实代码中)也是来自另一个数据库的Linq-to-SQL查询。但是我关于L2S在一般情况下无法做到这一点的事实表明您的观点。 – 2009-10-30 14:49:20
@Roger:如果你想枚举所有的名字,你必须从数据库中获取整个集合,所以为什么不使用.ToList()来获取它们并在生成的Linq-To-Objects列表上使用.Distinct ? – Niki 2009-10-30 15:05:58