c# - foreach OrderBy 有条件的
问题描述
如果 yy = true,我喜欢做 OrderBy。如果 yy = false,我不想做 OrderBy。有没有办法在下面显示的 foreach 语句中做到这一点。
如果 yy = true 它将执行以下操作:
foreach (var item in data.OrderBy(a => a.SectSortOrderNo).GroupBy(x => new { x.SectId, x.SectName }))
{
....
};
如果 yy = false,它将执行以下操作:
foreach (var item in data.GroupBy(x => new { x.SectId, x.SectName }))
{
....
};
我喜欢将它与一个条件结合起来。
我的另一个选择是带有 if 语句的 2 foreach。
先感谢您。
解决方案
其实很简单:
.OrderBy(a => yy ? a.SectSortOrderNo : default)
排序是稳定的.OrderBy()
,这意味着您可以按常数值“排序”它们并获得与没有“排序”它们相同的顺序。
检查以下示例:
IList<int> data = new List<int> { 1, 4, 5, 2, 5, 1, 1, 7};
bool yy = true;
foreach (var v in data.OrderBy(it => yy ? it : default(int))) {
Console.WriteLine(v);
}
这将产生预期的输出:
1
1
1
2
4
5
5
7
通过将yy
变量更改为false
您将保持原始顺序:
1
4
5
2
5
1
1
7
推荐阅读
- javascript - unhandledRejection 后是否需要重新启动我的应用程序
- javascript - 我应该在 BehaviorSubject 中使用 asObservable 吗?
- linux - 使用 Ansible playbook 在 Linux VM 上可靠地定位正确的 Azure 托管磁盘
- java - 如何将 JToolBar 设置为框架的大小
- html - 我需要从网络链接(它是运输标签)中获取 PDF 并将其显示在 HTML 页面上并能够打印出来
- javascript - 在 Javascript 中为 Web 应用程序生成日志
- javascript - 在反应原生 iOS/Android 中实现日期范围过滤器时遇到问题
- reactjs - RaFormInput 宽度似乎总是 256px
- c# - 如何在WEB API中返回数据后添加状态名称:成功和消息?
- wpf - 现代WPFUI + powershell = System.Windows.Markup.StaticResourceHolder