我要做多部分的种类和要动态做到这一点。
我发现这个问题,但不知道如何在的DBQuery语句中使用func
。
No generic method 'ThenBy' on type 'System.Linq.Queryable'
如果我能在线程中获取代码的工作将是必杀技。
我所看到的所有例子then
语句中使用where
,但我需要使用的功能做排序。
我一直在使用IQueryable的,包括那些为排序依据和orderbydescending编写的扩展。问题是thenby
和thenbydescending
使用iorderedqueryable
。
使用ThenByProperty当我得到的错误是
型的对象 'System.Data.Entity.Infrastructure.DbQuery1[ORMModel.v_Brand]' cannot be converted to type 'System.Linq.IOrderedEnumerable
1 [ORMModel.v_Brand]'。
当我使用类似OrderByProperty扩展不要让这样的错误。
什么乱七八糟的,很明显,我不张贴经常在这里。反正我难倒和无能,所以任何提示是非常赞赏。
曾经试图发布代码,但不断收到格式错误,所以放弃了。但是帮助我反正:)
如果您使用方法的语法,你会看到FUNC很多时候,例如在Where
,GroupBy
,Join
等
对于某些输入参数和一个返回值的每一个方法可以如下被转换为Func<...>
MyReturnType DoSomething(ParameterType1 p1, ParameterType2, p2) {...}
Func<ParameterType1, ParameterType2, MyReturnType> myFunc = (x, y) => DoSomething(x, y);
部分Func<ParameterType1, ParameterType2, MyReturnType>
指:具有两个输入参数和一个返回值的函数。输入参数是类型ParameterType1
和ParameterType2
的,以该顺序。返回值是MyReturnType
的。
您实例使用lambda表达式Func<ParameterType1, ParameterType2, MyReturnType>
的对象。在=>
在你键入输入参数的声明中,=>
后调用这些输入参数的功能。如果你有一个以上的输入参数,你让他们逗号分隔用方括号括。
对于Where
你需要一个Func<TSource, bool>
。使得具有作为输入的一个源元件,并且作为功能导致一个bool:
Where(x => x.Name == "John Doe")
对于群组加入您需要的类型Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult> resultSelector
的resultSelector
因此,这是用作为输入外序列的一个元素,并且内序列的元素的序列的功能。例如,查询教师与学生:
var result = Teachers.GroupJoin(Students,
teacher => teacher.Id, // from every Teacher take the Id,
student => student.TeacherId, // from every Student take the TeacherId,
(teacher, students) => new
{
Id = teacher.Id,
Name = teacher.Name,
Students = students.Select(student => new
{
Id = student.Id,
Name = student.Name,
})
.ToList(),
});
在这里,你看到几个funcs中。 TOuter是老师,TINNER是学生,TKEY的数据类型为int
Func<TOuter, TKey>
:老师=> teacher.IdFunc<TInner, TKey>
:学生=> student.TeacherIdFunc<Touter, IEnumerable<TInner>, TResult>
所述resultSelector是一个函数,它有一个TOuter(教师),和TINNER的序列(这教师的所有学生),并使用输入参数创建一个对象
(teacher, students) => new {... use teacher and students }
在创建lambda表达式,如果你使用复数指集合(教师,学生)以及英文单,如果你指的集合(学生)的一个元素往往是有帮助的。
使用=>
开始定义FUNC。您可以使用=>
之前中定义的输入参数=>
后确定的结果