2013-08-30 18 views
0

我有一條路線,看起來像︰?author=dog,cat,chicken 我想要做的是得到我從GET請求中獲得作者的列表,並通過我收到的列表搜索作者表。我將如何做到這一點?實體Linq搜索與列表的列表

在我看來,我有:

public ActionResult Index(string author= null) 
{ 
    var authors= author.Split(','); 
    var data = db.ComicAuthors.Where(i => i.User.UserName.Contains(authors)); //ERROR HERE 
    return View(); 
} 

回答

4

嘗試扭轉你的邏輯,用戶名永遠不會包含字符串列表,但字符串列表可能包含用戶名:

public ActionResult Index(string author= null) 
{ 
    var authors= author.Split(','); 
    var data = db.ComicAuthors.Where(i => authors.Contains(i.User.UserName)); 
    return View(); 
} 

*請注意,您可能需要先拉動所有ComicAuthors,因爲您可能會收到「Expression無法轉換爲SQL表達式」類型的錯誤消息。

public ActionResult Index(string author= null) 
    { 
     var authors= author.Split(','); 
     var data = db.ComicAuthors.ToList().Where(i => authors.Contains(i.User.UserName)); 
//May want to actually send data back to view 
     return View(data); 
    } 

附錄

如果要檢查有沒有作者確定的情況下,只要做對筆者串快速布爾檢查:

public ActionResult Index(string author= null) 
    { 
     var data = db.ComicAuthors.ToList() 
     if(!string.IsNullOrEmpty(author)){ 
      var authors= author.Split(','); 
      data = data.Where(i => authors.Contains(i.User.UserName)); 
     } 
     //May want to actually send data back to view 
     return View(data); 
    } 
+0

快速第二個問題,如果我不能爲作者提供任何東西,我該如何重複使用查詢並將其置於所有漫畫作者的位置? –

+0

@MohamadBataineh - 更新來解決您的額外問題 – Tommy

+0

是的,我只是意識到,你可以把它分開。謝謝您的幫助! –

1
var data = db.ComicAuthors.Where(i => authors.Contains(i.User.UserName)); 
1
public ActionResult Index(string author= null) 
{ 
    if(string.IsNullOrEmpty(author)) 
      return View(db.ComicAuthors); 

    var authors= author.Split(','); 
    return View(db.ComicAuthors.Where(i => authors.Any(a=> a == i.User.UserName))); 

} 
+0

快速的第二個問題,我如何重複使用查詢,並使其獲得所有漫畫作者的位置,如果他們沒有爲作者提供任何內容的話? –

+1

@MohamadBataineh檢查我更新的答案 – Damith