example ejemplos c# .net linq iqueryable

example - iqueryable c# ejemplos



Lista<T> para implementar IQueryable<T> (2)

El motivo de su problema es que si realiza AsQueryable , comprueba si el objeto ya implementa IQueryable y si sí lo devuelve.

Use la new EnumerableQuery<T>(this) lugar de AsQueryable que no realiza esta comprobación.

Solución para .net 3.5:

return ((IEnumerable<T>)this).Select(x=>x).AsQueryable()

La primera vez que se IEnumerable<T> a IEnumerable<T> el método de Select elegido será Enumerable.Select no Queryable.Select . La selección de identidad devolverá un nuevo objeto que no implementa IQueryable<T> , por lo que la comprobación si se implementa en AsQueryable falla.

Estoy tratando de crear un simulacro para mi interfaz IRepository :

public interface IRepository<T> : ICollection<T>, IQueryable<T> { }

Con esta implementación:

public class RepositoryFake<T> : List<T>, IRepository<T> { public Expression Expression { get { return this.AsQueryable().Expression; } } public Type ElementType { get { return this.AsQueryable().ElementType; } } public IQueryProvider Provider { get { return this.AsQueryable().Provider; } } }

Pero cuando lo uso, estoy obteniendo la excepción StackOverflow . ¿Cómo implementar esta interfaz correctamente para poder usar solo una List como repositorio?

El uso es muy simple.

[Test] public void Test() { RepositoryFake<User> users = new RepositoryFake<User>(); users.Add(new User()); List<User> list = (from user in users where user.Id == "5" select user).ToList(); Assert.That(list, Is.Empty); }

Aquí está la captura de pantalla de la excepción:


Intente usar base.AsQueryable() lugar de this.AsQueryable() .