我需要将id传递给webapi控制器并返回结果。我目前正在将id作为一个对象数组传递。我需要将id与数据集匹配并返回结果。我发现了一些我想要使用的帖子。
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的方式。
答案 0 :(得分:2)
我认为市场代码是int所以:
[HttpPost]
[Route("getAssignedMarkets")]
public IQueryable GetAssignedMarkets(int[] arry)
{
return db.markets.Where(x => arry.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.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();
}
答案 1 :(得分:1)
您可以将数组中的所有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;
假设您将其与市场表中的market_code
列进行比较,并且类型为Int
。