IListを - LINQフィルタリングするとORDER BY
-
19-09-2019 - |
質問
私は、一般的なリストを検索するには、次のテストコードを持っています:
public void DoSearch(string searchTerm)
{
IList<MyEntity> entities = GetCollectionOfEntities();
IList<MyEntity> results = entities.Where(d => d.Description.Contains(searchTerm)).ToList();
}
私は(MyEntityの財産になります)、そしてもちろんそれに基づいて私の結果を注文パラメータで順番を通過したいです。私は、LINQは、[並べ替えを使用していますが、MyEntityのプロパティで注文する方法を理解していない理解しています。
解決
あなたはちょうどあなたがで注文したいプロパティを指定するFunc<TSource,TKey>
を使用します
DoSearch("foo", e => e.SomeProperty);
// ...
public void DoSearch<TKey>(string searchTerm, Func<MyEntity, TKey> orderBy)
{
IList<MyEntity> entities = GetCollectionOfEntities();
IList<MyEntity> results = entities
.Where(e => e.Description.Contains(searchTerm))
.OrderBy(orderBy)
.ToList();
// etc
}
他のヒント
public void DoSearch(string searchTerm, Func<MyEntity, PropertyType> selector)
{
IList<MyEntity> entities = GetCollectionOfEntities();
IList<MyEntity> results = entities
.Where(d => d.Description.Contains(searchTerm))
.OrderBy(selector)
.ToList();
}
DoSearch("searchTerm", entity => entity.Property)
PropertyTypeはをソートしたいプロパティのタイプです。そうでなければ、あなたはそれが一般的のように作ることができます:
public void DoSearch<TKey>(string searchTerm, Func<MyEntity, Tkey> selector)
そして、それを呼び出します。
所属していません StackOverflow