我必须进行多部分排序,并且要动态地进行。
我发现了这个问题,但是不知道如何在dbquery语句中使用Holidays_Number_lbl.Text = "1" + "20"; //The result become 120
。
No generic method 'ThenBy' on type 'System.Linq.Queryable'
如果我可以使线程中的代码正常工作,那将是必杀技。
我看到的所有示例在 $idArray = [ // contains some 50-100 elements in total
"BANANA",
"APPLE",
"COCONUT",
"PEAR",
];
foreach($idArray as $val) {
$query = "SELECT * FROM {$tableName} WHERE ID = '{$val}'";
$result = mysqli_query($conn, $query) or die('error');
while($data = mysqli_fetch_array($result)) {
$$val = $data["COINFO"];
}
}
语句中都使用func
,但是我需要使用该函数进行排序。
我使用IQueryable编写了扩展名,包括orderby和orderbydescending的扩展名。问题是then
和where
使用thenby
。
使用ThenByProperty时出现的错误是
类型为“ System.Data.Entity.Infrastructure.DbQuery thenbydescending
1 [ORMModel.v_Brand]”的对象。
当我使用类似的OrderByProperty扩展名时,不要出现此类错误。
真是一团糟,显然我不在这里经常发帖。无论如何,我感到迷茫而无知,因此非常感谢任何提示。
试图发布代码,但不断出现格式错误,因此放弃了。但是无论如何请帮助我:)
答案 0 :(得分:0)
如果使用方法语法,则会经常看到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>
。因此,一个函数具有一个输入源元素,结果是一个布尔值:
Where(x => x.Name == "John Doe")
对于GroupJoin,您需要类型为Func<TOuter,System.Collections.Generic.IEnumerable<TInner>,TResult> 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.Id Func<TInner, TKey>
:学生=> student.TeacherId Func<Touter, IEnumerable<TInner>, TResult>
resultSelector是一个函数,它需要一个TOuter(一名教师)和一系列TInner(该教师的所有学生),并使用输入参数创建一个对象
(teacher, students) => new {... use teacher and students }
在创建lambda表达式时,如果您使用复数形式引用集合(老师,学生),而使用单数形式引用集合(学生)中的一个元素,则通常会很有帮助。
使用=>
开始定义功能。您可以使用=>
之前定义的输入参数来定义=>