質問

私は、一般的なリストを検索するには、次のテストコードを持っています:

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)

そして、それを呼び出します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top