2014-10-15 10 views
0

I ', приближаясь к EF6. Я понял, что, если мне нужна одна запись, я могу использовать метод First() (можно использовать также как «get», я думаю).Entity Framework 6: отфильтровать таблицу

Но что, если мне нужна коллекция записей из моего стола? Я имею в виду, если результат запроса может иметь мощность от 0 до N ... что мне делать?

Silly Пример:

Имя таблицы: SomeTable

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

...

Как я могу получить все записи, где someAttr является "желтый"?

ответ

1

использованием LinQ & C#

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

самый простой !! :) –

1

После того, как у вас есть запрос 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/en-us/library/vstudio/bb342261(v=vs.100).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() 
0

Если у вас есть 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