如何使用LINQ比较和选择列表中的特定对象

cnh2zyt3  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(158)

我有两组对象列表。一组名为SellWish,另一组名为holdingAdviceDecisions。这两个对象通过两个项链接,例如:销售意愿Id和持有建议Id
我尝试使用以下条件获取它们之间的匹配值

holdingAdvice.CustomerDecision == CustomerDecision.FollowsAdvice

这是我目前所尝试的:

var item = sellWishes.Where(sellWish =>
 holdingAdviceDecisions.Where
 (holdingAdvice => sellWish.Id == holdingAdvice.TradeInstructionId
      && holdingAdvice.CustomerDecision == CustomerDecision.FollowsAdvice));

但我得到以下错误:
1.错误CS1662
无法将lambda表达式转换为所需的委托类型,因为块中的某些返回类型无法隐式转换为委托返回类型
2.错误CS0029
无法将类型“System.Collections. Generic.IEnumerable”隐式转换<HoldingsAdvice.Contracts.HoldingAdviceDecision>为“bool”
任何建议都将受到高度赞赏。

cdmah0mi

cdmah0mi1#

你需要

var items = sellWishes.Where(sellWish =>
  holdingAdviceDecisions.Any
    (holdingAdvice => sellWish.Id == holdingAdvice.TradeInstructionId
   && holdingAdvice.CustomerDecision == CustomerDecision.FollowsAdvice));

注意,如果您知道您只有第一个(或空),这将返回所有匹配的条目

var item = sellWishes.Where(sellWish =>
        holdingAdviceDecisions.Any
  (holdingAdvice => sellWish.Id == holdingAdvice.TradeInstructionId
    && holdingAdvice.CustomerDecision == CustomerDecision.FollowsAdvice)).FirstOrDefault();

相关问题