【发布时间】:2014-06-27 16:18:26
【问题描述】:
本代码是 select case 语句内容的工作示例。它是响应链接按钮单击谁的 ID 通过 Session 变量传入的。链接按钮代表高 (3) 中 (2) 和低 (1) 风险类别。
这里的逻辑是;如果您选择 Medium(2),则首先显示相关行 (riskCategory =2),然后其余行 (risk category) 按降序排列,因此 3 然后 2 然后 0)
正如我所说,我为完成我的目标而对 Linq Concat 函数的丑陋实现确实产生了正确的结果,但它也表明我需要花费更多的周末来审查和创建比简单的 101 Link Samples 教程项目提供的更好的复杂示例。
必须有一种更优雅的分组和排序方式,同时允许先对代表所选组的组进行排序,其余组按降序排列。再次选择 Group 1 LowRiskCategory,我必须先显示 LowRiskCategory (1),然后在排序的结果集中分别显示 3、2 和 0。
var midQuery = enumerableVersionTable.Where(x => x["RiskCategory"].Equals(intRiskCategoryEnum));
midQuery.OrderByDescending(v => v["DateOfService"]);
midQuery.OrderBy(v => v["Reviewed"]);
var midQueryZero = enumerableVersionTable.Where(x => x["RiskCategory"].Equals(0));
midQueryZero.OrderByDescending(v => v["DateOfService"]);
midQueryZero.OrderBy(v => v["Reviewed"]);
var midQueryOne = enumerableVersionTable.Where(x => x["RiskCategory"].Equals(1));
midQueryOne.OrderByDescending(v => v["DateOfService"]);
midQueryOne.OrderBy(v => v["Reviewed"]);
var midQueryThree = enumerableVersionTable.Where(x => x["RiskCategory"].Equals(3));
midQueryThree.OrderByDescending(v => v["DateOfService"]);
midQueryThree.OrderBy(v => v["Reviewed"]);
var querySummation = midQuery.Concat(midQueryThree);
querySummation = querySummation.Concat(midQueryOne);
querySummation = querySummation.Concat(midQueryZero);
dtQueryResults = querySummation.CopyToDataTable()
只是在案例 2 的翻译后的枚举值之后看到那些硬编码的数字值: 让我想投掷。必须有更优雅的方式来进行分组。按特定组订购。当然也可以应用我所有其他奇怪的排序,如您所见的服务日期和审核日期。
最后,如果你再次投反对票 至少解释一下为什么谢谢你
【问题讨论】: