如何遍历对象数组并匹配数据库以及 return 与 linq 匹配

how to loop through a array of objects and match to a database and return matching with linq

我需要将 id 传递给 webapi 控制器并 return 结果。我目前将 id 作为对象数组传递。我需要将 ID 与数据集匹配,然后 return 结果。我找到了几个我正在尝试使用的帖子。

 return db.markets.Where(x => db.markets.Contains(x.x_market_code));

这不起作用,因为它不是字符串或列表?我试图将数组转换为字符串或列表,但我没有得到任何结果。

这是代码

 public class marketIds
{
    public int x_market_code { get; set; }
}

    [HttpPost]
    [Route("getAssignedMarkets")]
    public IQueryable GetAssignedMarkets(marketIds[] arry)
    {
      return db.markets.Where(x => arry.Contains(x.x_market_code));
    }

如果需要,我可以更改在 javascript 中传递 ID 的方式。

错误信息

我假设市场代码是 int 所以:

[HttpPost]
[Route("getAssignedMarkets")]
public IQueryable GetAssignedMarkets(int[] arry)
{
  return db.markets.Where(x => arry.Contains(x.x_market_code));
}

但你可以使用字符串或其他任何东西, 但是您仍然可以使用 class:

 public class marketIds
{
    public int x_market_code { get; set; }
}

    [HttpPost]
    [Route("getAssignedMarkets")]
    public IQueryable GetAssignedMarkets(marketIds[] arry)
    {
      return db.markets.Where(x => arry.where(t=>t.x_market_code == x.x_market_code).Any());
    }

根据您的错误信息,也许这会对您有所帮助:

[HttpPost]
[Route("getAssignedMarkets")]
public IQueryable GetAssignedMarkets(int[] arry)
{
  return db.markets.Where(x => arry.Contains(x.x_market_code.Value)).ToList();
}

您可以将读取所有 market_code 从数组转换为字符串集合,然后在您的 LINQ 查询中使用 Contains() 方法。

var codeList = arry.Select(s => s.x_market_code).ToList();
var result=db.markets.Where(x => codeList.Contains(x.x_market_code));
return result;

假设您将其与市场 table 中的 market_code 列进行比较,并且它的类型为 Int.