我如何从List.EntitySet中删除所有

问题描述 投票:0回答:1

我试图从Linq.EntitySet中删除所有项目,但我尝试的只是删除列表中的项目而不是从EntitySet

我在其他问题中看到问题是项目从新创建的列表中删除而不是从原始列表中删除,这正是我的代码中发生的事情,但没有一个答案解决了我的问题。

到目前为止我尝试过的:

这将删除列表siskevasiaEidous上的项目,但这些项目仍然存在于BisCurrent.SiskevasiesEidousBis

List<SiskevasiesEidousBis> siskevasiaEidous = 
                        BisCurrent.SiskevasiesEidousBis.Where(
                            p=> p.ArithmosEidous == Convert.ToInt32(BisCurrent.ArithmosEidous3_32.Value.ToString())).ToList();

这段代码让我觉得我在该列表中有5个项目,2个将被删除,但是当它运行时它对列表没有任何作用。

BisCurrent.SiskevasiesEidousBis.ToList().RemoveAll(a => a.ArithmosEidous == 4);

我发现一个非常有前途的代码,它实际上替换了相同的列表而没有我要删除的项目

BisCurrent.SiskevasiesEidousBis = BisCurrent.SiskevasiesEidousBis.Where(a => a.ArithmosEidous != BisCurrent.ArithmosEidous3_32.Value);

它给了我错误:

不能隐含转换类型System.Collections.Generic.Ienumerable到'System.Data.Linq.EntitySetAn显式转换ecists(你错过了演员?)

c# linq lambda
1个回答
0
投票

感谢@jdweng我找到了解决问题的方法。我发现在我的程序中工作的唯一方法是:首先我通过创建一个新的Generic.List删除所有“不必要的”项目。

List<SiskevasiesEidousBis> results = BisCurrent.SiskevasiesEidousBis.Where(a => a.ArithmosEidous != BisCurrent.ArithmosEidous3_32.Value).ToList();

其次,我创建了一个新的EntitySet

 EntitySet<SiskevasiesEidousBis> es = new EntitySet<SiskevasiesEidousBis>();

最后,我使用项填充EntitySet,并将EntitySet传递回原始List

es.AddRange(results);
BisCurrent.SiskevasiesEidousBis = es;

我不知道是否有更干净的代码,但这很好用。谢谢你的帮助

© www.soinside.com 2019 - 2024. All rights reserved.