扩展名/方法中的C#Linq

问题描述

| 问候 我正在寻找创建包含linq查询的扩展方法。 我正在寻找的是可以执行类似操作的方法或扩展方法
var orderedList = OrderThisList<ModelName>(List<T> sourceList,//and something like m=>m.Username); 
其中ModelName是实体,而Username是我要订购的字段。 该方法看起来像
public List<T> OrderThisList<T>(//some linq property?)
{
    //What code goes here?
}
    

解决方法

编辑:仍然非常不清楚这个问题是什么,但是听起来我们正在处理内存中的集合,而不是LINQ to SQL等。 如果使用
OrderBy
的问题是无法对列表进行就地排序,则应使用
List<T>.Sort()
,可能会传入自定义比较器。 我的MiscUtil项目有一些帮助程序类型,可能会对您有所帮助。例如:
var comparison = ProjectionComparer<ModelType>.Create(m => m.SomeProperty)
                                              .ThenBy(m => m.SomeOtherProperty);
list.Sort(comparison);
如果您使用的是LINQ to SQL,并且有数据上下文,则可以使用:
public List<TSource,TKey> OrderThisList<TSource,TKey>(
    Expression<Func<TSource,TKey>> ordering)
{
    return dataContext.GetTable<TSource>()
                      .OrderBy(ordering)
                      .ToList();
}
现在显然需要两个类型参数,而您只想指定一个。解决这个问题的方法有很多种-基本上,您希望得到一个通用类型和一个可以推断出一个类型实参(
TKey
)的方法。例如:
var list = Orderer<ModelType>.Create(dataContext)
                             .OrderThisList(m => m.SomeProperty);
考虑到已经有2英镑了,这似乎有点混乱了……您能解释一下为什么要这样做,以及涉及到什么LINQ提供程序吗?     ,您应该使用内置的Linq方法ѭ9。您无需编写自己的扩展方法即可对列表进行排序。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...