大佬教程收集整理的这篇文章主要介绍了Asp.net LINQ groupby和orderBy在日期上未检索到预期的输出,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
解决此问题的一种方法是在拥有数据之后再从L2sql切换到L2Object,然后再次进行分组,以便进行排序:
var result = dataBaseList.GroupBy(x => x.Key)
.SELEctMany(...)
.AsEnumerable()
.GroupBy(x => x.DB)
.orderByDescending(g => g.Max(x => x.LastOccured));
这会给你组列表与Key
的DB
,在群体的最后一个异常的顺序。
要使用这些结果,可以使用嵌套的foreach循环:
<div ID="results">
@foreach(var group in Model)
{
int currentCol = 0;
<br style="clear:both" />
<h3> @group.Key </h3>
@foreach(var database in group)
{
<div class="logContainer" onclick="LOCATIOn.href='/logs/Details?databasEID=@database.DB&exceptionname=@database.Exception&exceptionsOccurred=@database.Count';">
@if (database.Count > 999)
{
<div class="counter-small"><b>@database.Count</b></div>
}
else
{
<div class="counter"><b>@database.Count</b></div>
}
<div class="exceptionname"> Exceptions of Type: @database.Exception</div>
<div class="date">Siste: @database.LastOccurred</div>
<hr />
</div>
currentCol += 1;
if (currentCol == 2) { //3 columns were displayed, switch row
currentCol = 0;
<br style="clear:both" />
}
}
}
</div>
我正在使用linq2sql处理asp.net mvc3应用程序。
我有一个SiteLog对象类型列表,其中还包含每个对象:一个名为CLRExceptionType的字符串和一个名为EntryDate的日期。此列表包含在词典中:
private Dictionary<String,List<SiteLog>> dataBaseList = new Dictionary<String,List<SiteLog>>();
DataClasses1DataContext db = new DataClasses1DataContext("String1");
DataClasses1DataContext db2 = new DataClasses1DataContext("String2");
然后在函数中的同一控制器中填充词汇表:
private void CreateDictionary()
{
dataBaseList.Add("db",db.SiteLogs.ToList());
dataBaseList.Add("db2",db2.SiteLogs.ToList());
}
然后我有这个Linq查询:
var result =
dataBaseList.GroupBy(x => x.Key)
.SELEctMany(x =>
x.SELEctMany(n => n.Value
.GroupBy(g => g.CLRExceptionTypE)
.SELEct(g => new
{
DB = x.Key,Exception = g.Key,Count = g.Count(),LastOccured =
g.Max(y =>
y.EntryDatE)
})))
.orderBy(x => x.DB)
.ThenByDescending(x => x.LastOccured);
那应该给我以下输出:
Database1:
Exception1(22次)上次发生:22.22.1989 19:30
Exception2(2次)上次发生20.5.1980 14.50
Database2
Exception1(22次)上次发生:21.10.1989 19:30
Exception2(2次)上次发生20.5 .1980 14.50
然后突然用数据库2中的新条目更新列表,所以我必须将此数据库放在最前面:
数据库2
Exception1(1次)最后
一次出现:29.07.2011 12.00 Exception1(22次)最后一次出现:21.10.1989 19:30
Exception2(2次)最后一次发生于20.5.1980 14.50
Database1:
Exception1(22次)最后一次发生于:22.10.1989 19:30
Exception2(2次)最后一次发生于20.5.1980 14.50
因此,基本上,我可以按日期对数据库中的日志进行排序,但是无法按数据库上的最后日期对数据库进行排序,如何解决此问题?观看代码(Index.cshtml):
<div id="results">
@{
String firstTime = "";
}
@foreach( var database in Model)
{
int currentCol = 0 ;
if (!(firstTime == database.DB))
{
<br style="clear:both" /><h3> @database.DB </h3>
currentCol = 0;
}
<div class="logContainer" onclick="LOCATIOn.href='/logs/Details?databasEID=@database.DB&exceptionName=@database.Exception&exceptionsOccurred=@database.Count';">
@if (database.Count > 999)
{
<div class="counter-small"><b>@database.Count</b></div>
}
else
{
<div class="counter"><b>@database.Count</b></div>
}
<div class="exceptionName"> Exceptions of Type: @database.Exception</div>
<div class="date">Siste: @database.LastOccurred</div>
<hr /> </div>
currentCol += 1;
if (currentCol == 2) { //3 columns were displayed,switch row
currentCol = 0;
<br style="clear:both" />
}
firstTime = database.DB;
}
</div>
提前Tnx
以上是大佬教程为你收集整理的Asp.net LINQ groupby和orderBy在日期上未检索到预期的输出全部内容,希望文章能够帮你解决Asp.net LINQ groupby和orderBy在日期上未检索到预期的输出所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。