查询GetChangeSet()以查找特定对象?

时间:2010-08-11 21:32:08

标签: linq-to-sql

提供以下代码:

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

让我们说前面的代码是一个被多次调用的方法。我不想两次提交相同的对象。是否可以使用DataContext查询GetChangeSet()以查看此对象是否已存在于ChangeSet中?

GetChangeSet().Insert会返回一个IList<object>我会在如何找到它时留空。

2 个答案:

答案 0 :(得分:3)

想出来......使用问题的代码

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

答案 1 :(得分:1)

您可以改用OfType<T>()扩展名方法。小清洁工。

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