【问题标题】:Check if collection contains element with specific properties [closed]检查集合是否包含具有特定属性的元素[关闭]
【发布时间】:2014-11-30 23:04:17
【问题描述】:

我有 2 个包含不同实体的集合。如何从它们中创建 1 个具有唯一数据(companyName & productName & certId)的集合。

我尝试的是: 第一个集合我在循环中迭代并检查第二个集合是否包含具有相同 certId、productName 和 companyName 的元素。但我不确定我是否做得很好。

如果元素不包含,我需要添加它。

releases.ForEach(
            r =>
            {
                if (!ratings.All(x =>
                    x.certID == r.certID && x.companyNameWhenRated == r.companyNameOnStore &&
                    x.productNameWhenRated == r.productNameOnStore))
                {
                    ratings.ToList().Add(new uRating
                                         {
                                             certID = r.certID,
                                             productNameWhenRated = r.productNameOnStore,
                                             companyNameWhenRated = r.companyNameOnStore,
                                             uCert = r.uCert,
                                             rAgeRating = r.uCert.uRatings
                                                 .Where(u => u.certID == r.certID
                                                             && u.productNameWhenRated != r.productNameOnStore
                                                             && u.companyNameWhenRated != r.companyNameOnStore)
                                                 .Select(ur => ur.rAgeRating).First()
                                         });
                }
            });

【问题讨论】:

  • 为什么不知道好不好?你试过运行它吗?有错误吗?意外行为?
  • 创建一个方法 bool HasSpecificProperties(object o);然后像这个集合一样检查。Any(HasSpecificProperties)
  • @eddie_cat,我从 db 获得的每个集合。 releases 有 2 个元素,ratings - 17 个元素,它们不一样。所以在这个操作之后,我希望集合中有 19 个元素
  • 这两个集合是否包含相同类型的元素?
  • @Magnus,不,2 个不同实体的集合

标签: c# linq equals contains


【解决方案1】:

if (!ratings.All(...)) 表示所有评级都必须与版本匹配,这不是您想要的。使用if(!ratings.Any(...)),这意味着任何评级都必须与发布相匹配。

【讨论】:

  • 谢谢,我认为这有帮助
猜你喜欢
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 2022-06-25
  • 2020-07-05
  • 1970-01-01
  • 2011-06-23
  • 2017-10-23
相关资源
最近更新 更多