2017-10-03 75 views
5

Kullanıcıların değişmez sorguları kullanarak varlıkları (yani age gt 20 and name eq 'john') filtre olanak sağlayacak işlevselliği oluşturmak gerekir. C#/Asp.Net MVC bunu yapmanın bir sağlanan işlevselliği var mı yoksa başıma bu sorguyu ayrıştırmak gerekiyor? Nasıl C# sorguları kullanarak varlıkları filtrelemek için?

I OData tam da bu özelliğe ( OData Filter Expressions MSDN) sahip olan anlamına gelir bulundu. Projemde böyle bir davranış nasıl uygulanacağı bilmiyorum ancak ben onunla aşina değilim. Herhangi bir tavsiye mutluluk duyacağız

var list = new List<Person> 
{ 
    new Person { Name = "John", Age = 30 }, 
    new Person { Name = "Hanna", Age = 25 }, 
    new Person { Name = "John", Age = 15 } 
}; 

string query = "age gt 20 and name eq /'John/'"; 
IEnumerable<Person> result = list.FilterByExpression(query); 
// returns list with John aged 30 

:

Böyle bir şey lazım.

cevap

2

Filter adı IEnumerable için bir uzantısı yöntemi içeren Linq2Rest adı Nuget bir paket bulunmaktadır. Filtreyi yapmak için gereken filtrenin dizesini geçirebilirsiniz. Dahili olarak, bir Expression Tree dönüştürülecektir ve mevcut IEnumerable uzantısı yöntemleri ile kullanılacak. numune için

:

var filteredSource = source.Filter(Request.Params); 

bu sorunu çözmek için kütüphaneler JSON.Net ve Linq2Rest kullanarak bu tür bir sorun ile başa çıkmak için nasıl bu makaleyi Creating a .Net queryable client for ASP.Net Web API oData services bakınız.

İlgili konular