2015-12-25 59 views
0

我需要将ID传递给webapi控制器并返回结果。我目前正在将ID作为一组对象传入。我需要将ID与数据集匹配并返回结果。我发现了一些我正在尝试使用的帖子。如何遍历对象数组并匹配到数据库并返回与linq的匹配

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)); 
    } 

我可以改变我如何通过IDS在JavaScript如果需要的话。

错误信息 image

+0

怎么样'.ToList();'在你的代码结束? – cramopy

+0

nope没有做任何事情 – texas697

回答

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(); 
} 
+0

它是相同的错误。 im发布的错误信息 – texas697

+0

我将更新我的帖子,秒 –

+0

手表是“枚举没有结果” – texas697

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类型。

相关问题