c# - LINQ 查询作为函数 C# 中的参数
问题描述
我有一个枚举EnumA
值 X、Y、Z、P、QRI 创建了一个Sort(linqquery as parameter)
在 C#、.NET 版本 4.7.2 中调用的函数
我应该能够编写一个函数参数,例如
tt=>tt.X.Ascending().ThenBy(tt.Y).ThenBy(tt.P.Descending())
函数体将返回结果按 A 升序排序,然后按 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";
您将从课程开始Data
:
public class Data
{
public string X;
public string Y;
public int Z;
public string P;
public string Q;
public string R;
}
然后像这样读入:
IEnumerable<Data> data1 = JsonConvert.DeserializeObject<Data[]>(File.ReadAllText("file.json"));
然后调用以下命令:
IEnumerable<Data> data2 = transform(data1);
IEnumerable<Data> data3 = data2.Where(predicate);
这会给你这个:
推荐阅读
- python - 正确转换 python 字节字符串中的特殊字符
- powershell - 通过 PowerShell 禁用 CDN
- mirth - Mirth:由基于 JS 的数据库编写器中的错误触发的警报无权访问 {messageId}?
- ios - SwiftUI 使用套接字有效负载更新列表
- javascript - 将字符串数组转换为多维数组
- javascript - Jquery - 如何为猫头鹰轮播滑块中的内容设置动画?
- gitlab-ci - Gitlab CI 在 2 个手动作业之间进行选择
- node.js - 添加 setupFilesAfterEnv 后,模拟函数在 .test 文件中不起作用
- git - 有没有办法从 Bitbucket 中的远程 git repo 的分支下载文件夹?
- django - 仅显示管理员添加到 DB django admin 的内容