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

Linq to sql 查询GetChangeSet()以查找特定对象?,linq-to-sql,Linq To Sql,给出以下代码: Animal a = new Animal { Name = "Rover", Type = "Dog" }; ctx.Animal.InsertOnSubmit(a); 假设前面的代码位于被多次调用的方法中。我不想两次提交同一个对象。是否可以使用GetChangeSet()查询DataContext,查看变更集中是否已经存在此对象 GetChangeSet().Insert返回一个IList关于如何找到它,我画了一个空白。找到了它。。。使用问题代码 ctx.GetChange

给出以下代码:

Animal a = new Animal { Name = "Rover", Type = "Dog" };
ctx.Animal.InsertOnSubmit(a);
假设前面的代码位于被多次调用的方法中。我不想两次提交同一个对象。是否可以使用
GetChangeSet()
查询
DataContext
,查看变更集中是否已经存在此对象


GetChangeSet().Insert
返回一个
IList
关于如何找到它,我画了一个空白。

找到了它。。。使用问题代码

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

您可以使用OfType()的
扩展方法。小清洁工

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

老实说,这个代码不好。我会使用()类型的
。不能使用
Cast()
,因为如果任何元素不是
T
类型,它将抛出
InvalidCastException