下面是代碼:如何在C#中過濾和排序集合?
public ActionResult Index()
{
var crView = db.CRCases.ToList();
return View(crView);
}
想過濾像我們在使用WHERE
和ORDER BY
SQL語句。 如何應用它有什麼好的參考?
下面是代碼:如何在C#中過濾和排序集合?
public ActionResult Index()
{
var crView = db.CRCases.ToList();
return View(crView);
}
想過濾像我們在使用WHERE
和ORDER BY
SQL語句。 如何應用它有什麼好的參考?
linq是你的朋友在這裏。
你可以做
crView = crView.Where(x => x.yourPredicate).OrderBy(y => y.OrderClause);
CRCases應該是DBSet<T>
。你可以這樣使用LinQ
:
db.CRCases.Where(x => x.TheProperty =xxx).ToList()
你可以使用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的其他口味。事實上,你可以創建自己的,但這並不容易。
最後,您必須考慮到LINQ查詢在執行之前不會執行。即它不會被執行,直到你試圖從中獲得數據(將其轉換爲ToList()
,ToArray()
或其他任何東西,枚舉它或訪問它的任何數據First()
,Sum()
,Count()
)。根據風格,執行可以運行C#代碼(LINQ到對象),或者在數據庫中運行SQL查詢(LINQ to SQL)或其他。
這裏有一個偉大的地方,學習如何使用LINQ:
沒有爲列表的一個'的OrderBy()'方法。 –
使用[LinqToSQL](http://msdn.microsoft.com/library/bb386976(v = vs.110).aspx) – RononDex
和Where()做一個選擇。 – scheien