1

一般的なリストを検索する次のテスト コードがあります。

public void DoSearch(string searchTerm)
{

IList<MyEntity> entities = GetCollectionOfEntities();

IList<MyEntity> results = entities.Where(d => d.Description.Contains(searchTerm)).ToList();

}

パラメーター (MyEntity のプロパティ) で順序を渡し、それに基づいて結果を並べたいと思います。LINQ が OrderBy を使用していることは理解していますが、MyEntity のプロパティで注文する方法がわかりません。

4

2 に答える 2

11

a を使用し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
}
于 2010-01-11T11:34:13.440 に答える
0
    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)

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

于 2010-01-11T11:48:49.300 に答える