2013-12-11 62 views
0

下面是代碼:如何在C#中過濾和排序集合?

public ActionResult Index() 
{ 
    var crView = db.CRCases.ToList(); 
    return View(crView); 
} 

想過濾像我們在使用WHEREORDER BY SQL語句。 如何應用它有什麼好的參考?

+0

沒有爲列表的一個'的OrderBy()'方法。 –

+0

使用[LinqToSQL](http://msdn.microsoft.com/library/bb386976(v = vs.110).aspx) – RononDex

+0

和Where()做一個選擇。 – scheien

回答

0

linq是你的朋友在這裏。

你可以做

crView = crView.Where(x => x.yourPredicate).OrderBy(y => y.OrderClause); 
0

CRCases應該是DBSet<T>。你可以這樣使用LinQ

db.CRCases.Where(x => x.TheProperty =xxx).ToList() 
0

你可以使用LINQ = Language Integrated Query。

這有兩個不同的符號:

  • 功能:你可以改變幾個函數調用開始對一個IEnumerable。

    db.CrCases.Where(predicate).OrderBy(sortExpression)

  • 「像SQL」:它真的看起來像一個 「無序SQL」。

    from crCase in db.CrCases where condition orderby sortExpression select crCase

條件和排序在所述第一符號表達需要lambda表達式(you can see them in action here)。在第二種情況下,表達條件。

大多數查詢都可以用任何方式編寫。

您通常會使用var來存儲查詢,並在以後實現。

var query = from crCase in db.CrCases 
    where condition orderby sortExpression 
    select crCase 
CrCase firstCase = query.Firts(); 
List<CrCase> cases = query.ToList(); 

有幾種風格的LINQ。它們在表面上看起來都是平等的,但卻被翻譯成另一種東西。例如:

  • LINQ to objects:它是更一般的,允許查詢集合。這是你將用於這個特殊情況的東西。 LINQ to SQL:這允許在C#中編寫查詢,並將其轉換爲底層數據庫中的SQL查詢
  • LINQ to Entities:與前面類似,但是您向查詢實體框架模型以及查詢最終被交換到DB

還有一些LINQ的其他口味。事實上,你可以創建自己的,但這並不容易。

最後,您必須考慮到LINQ查詢在執行之前不會執行。即它不會被執行,直到你試圖從中獲得數據(將其轉換爲ToList(),ToArray()或其他任何東西,枚舉它或訪問它的任何數據First(),Sum(),Count())。根據風格,執行可以運行C#代碼(LINQ到對象),或者在數據庫中運行SQL查詢(LINQ to SQL)或其他。

這裏有一個偉大的地方,學習如何使用LINQ:

LINQ 101