簡體   English   中英

實體框架6:篩選表格

[英]Entity Framework 6: filter a table

我正在接近EF6。 我知道,如果我想要一條記錄,則可以使用First()方法(我認為它也可以像“ get”一樣使用)。

但是,如果我要從表中收集記錄怎么辦? 我的意思是,如果查詢結果的基數可以從0到N ...我該怎么辦?

愚蠢的例子:

名稱表:SomeTable

ID    NAME    SOMEATTR
1      A       YELLOW
2      B        RED
3      C       YELLOW
4      D       YELLOW
5      E        BLUE

...

如何獲得someAttr為“黃色”的所有記錄?

一旦您有Linq查詢...

var query = (from ... in ... where ... select ...);

或者,對於您的特定示例:

var query = (from r in dbContext.MyTable where (r.someAttr == "YELLOW") select r);

您可以使用foreach對其進行迭代,這將導致它執行一次,然后產生結果...

foreach (var r in query)
{
}

...或致電ToList()http://msdn.microsoft.com/zh-cn/library/vstudio/bb342261 ToList() .aspx ),如果您想獲取一個列表,以后可以被多次傳遞,操縱或檢查。 (返回后,此列表實際上已與服務器斷開連接。)

var list = query.ToList()

...或使用它來構建類似HashSet<T>的集合( http://msdn.microsoft.com/en-us/library/bb301504(v=vs.110).aspx

var set = new HashSet<T>(query)

這些中的任何一個都將使其僅在服務器上執行一次,並處理結果。

畢竟,查詢本身是IEnumerable 它也是IQueryable因此您可以進一步操作它, 然后枚舉結果,例如...

var sortedList = query.OrderBy(...).ToList()

使用linq和C#

private readonly myEntities db = new myEntities()
public list<SomeTable> MyRecords()
{
 return res = db.SomeTables.where(o => o.SOMEATTR == "YELLOW").ToList()
}

如果您有一個映射到SOMEATTR表的SOMEATTR類,則可以查詢它:

var context = new YourDbContext();
var results = context.SomeTables.Where(x=>x.SOMEATTR == "Yellow").ToList();

//then you can iterate all results
foreach(var item in results)
{
    Console.WriteLine(item.ID + " " + item.NAME + " " + item.SOMEATTR);
}

結果將是:

1      A       YELLOW
3      C       YELLOW
4      D       YELLOW

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM