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

您只需使用 aFunc<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 回答