2010-08-11 101 views
3

給予以下代碼:查詢GetChangeSet()以查找特定對象?

Animal a = new Animal { Name = "Rover", Type = "Dog" }; 
ctx.Animal.InsertOnSubmit(a); 

比方說前面的代碼是一個被調用多次方法。我不想提交同一個對象兩次。是否有可能使用GetChangeSet()查詢DataContext以查看ChangeSet中是否存在此對象?

GetChangeSet().Insert返回一個IList<object>我正在畫一個空白的如何找到它。

回答

3

想通了...使用問題的代碼

ctx.GetChangeSet().Inserts.Any(ani => ani as Animal != null 
            && ((Animal) ani).Name == a.Name); 
+0

這段代碼不好說實話。我會用'OfType ()'。你不能使用'Cast ()',因爲如果任何元素不是'T'類型,它會拋出'InvalidCastException'。 – hIpPy 2015-12-22 19:53:59

1

可以使用OfType<T>()擴展方法來代替。小清潔劑。

ctx.GetChangeSet().Inserts 
.OfType<Animal>().Any(ani => ani.Name == a.Name);