【问题标题】:How to access an attribute of an item in an ICollection using Linq如何使用 Linq 访问 ICollection 中项目的属性
【发布时间】:2013-11-16 00:29:25
【问题描述】:

这是在 ASP.NET MVC 4 中,

我有一个投资组合表,投资组合类的属性之一是股票的 ICollection。股票有一个字符串属性:Symbol。如果我有投资组合对象,我会尝试检查特定股票的代码以查看它是否与我正在寻找的匹配。

private PortfolioDb _db = new PortfolioDb();

public ActionResult Index([Bind(Prefix="id")]int portfolioId, 
    string searchTerm = null)
{
      var portfolio = _db.Portoflios
                      .Where(p=> searchTerm == null   || 
                               (p.Id == portfolioId && p.Stocks.Symbol == searchTerm)

所以p.Stocks 是我的ICollection 股票,我想检查所有这些股票的代码,看看它们是否与搜索词匹配。但是,我不能p.Stocks.Symbol,我想知道如何访问 Stocks 集合中每个项目的每个符号。

谢谢

【问题讨论】:

  • 您可能需要使用groupby组合查询
  • 你想要什么回来?股票对象?所有包含这些股票的投资组合?
  • 我想找到具有匹配的投资组合 ID 并且在其股票列表中有一个股票对象的投资组合,该股票的符号与 searchTerm 匹配。所以 1 == 1 AND "MSFT" == "MSFT"

标签: c# asp.net linq asp.net-mvc-4


【解决方案1】:

使用.Any 查找具有与搜索词匹配的任何股票的投资组合::

&& p.Stocks.Any(s => s.Symbol == searchTerm)

【讨论】:

  • 这解决了我的问题。正在搞乱 .Select 而不是 .Any。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 2015-09-30
  • 1970-01-01
  • 2011-11-18
相关资源
最近更新 更多