使用 Linq 查询进行区分
每个 InfringementEntity 都有一个类型。
foreach (InfringementEntity ie in _infCol.InfCollection.Select(r=>r).Distinct())
{
InfringementLodgementEntity.InfringementCollection.InfCollection.Add(ie);
}
InfringementLodgementCollection.InfringementLodgementEntities
.Add(InfringementLodgementEntity);
我需要选择所有不同类型的侵权实体并将它们插入到新的 InfringementLodgementEntity 中。然后将此 InfringementLodgementEntity 添加到 InfringementLodgementCollection 中。
问题是我如何选择不同类型的 InfringementLodgementEntity 将它们添加到新的 InfringementLodgementEntity 中。
Every InfringementEntity has a type.
foreach (InfringementEntity ie in _infCol.InfCollection.Select(r=>r).Distinct())
{
InfringementLodgementEntity.InfringementCollection.InfCollection.Add(ie);
}
InfringementLodgementCollection.InfringementLodgementEntities
.Add(InfringementLodgementEntity);
I need to select all Infringement Entity with a different type and insert them in a new InfringementLodgementEntity. And then add this InfringementLodgementEntity in InfringementLodgementCollection.
Question is how would I select infringementEntity with different types add them in a new InfringementLodgementEntity.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您应该实现
IEqualityComparer
检查类型,并使用Distinct
接受此类比较器的重载。You should implement an
IEqualityComparer<InfringementEntity>
checking for the type, and use theDistinct
overload that is accepting such a comparer.如果我理解您的问题,您可以使用 OfType()。
我遗漏了
.Select(r=>r)
因为它没有做任何有用的事情。If I understand your question, you can use OfType().
I left out
.Select(r=>r)
because it wasn't doing anything useful.我发现处理这个问题的最简单方法就是在基类中使用一个抽象方法 GetType() ,根据定义,该方法必须在继承类中重写。
反射相当昂贵,在大多数情况下应谨慎使用。因此,当我们使用它时,我们只存储反射的结果。
然后,这使我们能够执行以下操作:
从这里您可以执行您想要的操作,批量插入到另一个集合中或其他任何操作。
The simplest way I've found to deal with this is just have an abstract method GetType() in your base class which by definition must be overridden in your inherited class.
Reflection is rather expensive and should be used sparingly in most cases. So when we do use it we just store the result of our reflection.
This then allows us to do:
from here you can do what you want, a bulk insert into another collection or whatever.