跟進至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