2015-12-25 67 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類型。

相關問題