C# LINQ查询作为函数C中的参数

C# LINQ查询作为函数C中的参数,c#,.net,linq,C#,.net,Linq,我有一个enum,比如值为X,Y,Z,p,qr的EnumA 我在C.NET版本4.7.2中创建了一个名为Sortlinqquery的函数作为参数 我应该能够写一个函数参数,比如 tt=>tt.X.Ascending().ThenBy(tt.Y).ThenBy(tt.P.Descending()) 函数体将按升序、Y和p降序对返回的结果进行排序 这只是我想要实现的一个例子 另一个例子: RemoveColumn ( LINQquery as parameter) tt=>t

我有一个enum,比如值为X,Y,Z,p,qr的EnumA 我在C.NET版本4.7.2中创建了一个名为Sortlinqquery的函数作为参数

我应该能够写一个函数参数,比如

tt=>tt.X.Ascending().ThenBy(tt.Y).ThenBy(tt.P.Descending())
函数体将按升序、Y和p降序对返回的结果进行排序

这只是我想要实现的一个例子

另一个例子:

RemoveColumn ( LINQquery as parameter)

    tt=>tt.X && tt.Y && tt.Q

[{  "X": "Name",  "Y": "Hello",  "Z": 10,  "P": "Some value",  "Q": " Hello Again",  "R": "my data"}, {  "X": " Ha ha ha ",   "Y": "by bye",   "Z": 100,   "P": " value",   "Q": " Again",   "R": "m data"},{   "X": " Your Name",   "Y": "why",   "Z": 9,   "P": "  Ok  Some value",   "Q": " Music",   "R": " atda" }, {   "X": "John",   "Y": "Nuew",   "Z": 10,   "P": "Why your  value",   "Q": " Ta ta ata Again",   "R": "  cycle" }]
上面是我的JSON示例。在函数返回之前,我将根据linq参数对这个JSOn进行过滤或排序。
如何将LINQ作为参数传递

从它的声音来看,你基本上需要这样做:

Func<IEnumerable<Data>, IEnumerable<Data>> transform =
    tt => tt.OrderBy(t => t.X).ThenBy(t => t.Y).ThenByDescending(t => t.P);

Func<Data, bool> predicate =
    t => t.X == "John" && t.Y == "Nuew" && t.Q == " Ta ta ata Again";
然后像这样读:

IEnumerable<Data> data1 = JsonConvert.DeserializeObject<Data[]>(File.ReadAllText("file.json"));
然后拨打以下电话:

IEnumerable<Data> data2 = transform(data1);

IEnumerable<Data> data3 = data2.Where(predicate);
这将为您提供以下信息:


我没听懂。枚举实际上是一种整数类型,每个值都有符号别名。所以,如果有enum EnumA{X,Y,Z,P,Q,R},X是0的别名,R是5的别名。这与正在显示的lambda表达式有什么关系。顺便说一下,LINQ是语言集成查询的名称。你所说的是表达式。。是枚举值,但假定它们也是此函数返回的数据的列名。所以当这个排序返回数据时,它将基于X列,然后是Y列等等。这听起来像,但是第二个示例与第一个示例大不相同……您能提供一些模型和函数结构的有效示例吗?LINQquery as参数不是有效代码。什么是提升?您的模型是否包含EnumA的集合?这两个代码片段都无效,也没有任何上下文。我为Clarity添加了json出于好奇,在data1、data2和data3屏幕截图中,您使用什么来可视化表中的数据?@ColinM-这是。我现在大部分的代码都是这样写的。买高级版是值得的。
IEnumerable<Data> data2 = transform(data1);

IEnumerable<Data> data3 = data2.Where(predicate);