2011-05-20 11 views

Odpowiedz

12

nie jestem pewien jak to zrobić z DbSet, ale można to zrobić z DBContext przez uzyskanie dostępu do IQueryable

private readonly DbContext context; 
... 
context.Set<T>().OrderBy(item => item.Property) 
+0

Wiem, że nie jest to dokładnie to, o co prosiłem, ale spełnia to zadanie w widoku – Omar

1

miałoby to być zrobione w zapytaniu,

albo trzeba by zdefiniować QueryView w Edmx.

a QueryView może służyć do określania/kolejności/filtrowania danych.

Wystarczy popatrzeć na to: DefiningQuery versus QueryView

+0

Używam kodu pierwszego podejścia. Brak pliku Edmx. – Omar

+0

możesz spożywać EDMX z kodu, ale z drugiej strony jest to sprzeczne z pierwszą koncepcją całego kodu. –

2

Jak wspomniano Alexandre można to zrobić w zapytaniu jak:

var emps = from e in _db.Employees 
      orderby e.FirstName 
      select e; 

Tutaj _db.Employees jest DbSet.

3

Tutaj db.Employees jest DBSet. Czy to właśnie próbujesz zrobić?

using System.Linq; 

namespace MyNamespace 
{ 
    public class MyClass 
    { 
     public DBContext db; 
     public void MyMethod 
     { 
      foreach (var emp in db 
       .Employees 
       .Where(e => e.IsActive) // (or whatever) 
       .OrderBy(e => e.LastName)) 
      { 
       DoSomething(emp); 
      } 
     } 
    } 
} 
2

Co powiesz na używanie .OrderBy bezpośrednio na Entity?

db.Employees.OrderBy(p => p.Id); 
Powiązane problemy