Я работаю над приложением asp.net mvc3 с linq2sql.
У меня есть список типов объектов 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);
Это должно дать мне следующий вывод:
База данных1:
Исключение 1 (22 раза), в последний раз произошло: 22.10.1989 19: 30
Исключение2 (2 раза), последнийпроизошло 20.5.1980 14.50
База данных2
Исключение 1 (22 раза) Последнее появление: 21.10.1989 19: 30
Исключение2 (2 раза) последнее произошло 20.5.1980 14.50
Затем, внезапно, список обновляется новой записью в базе данных2, поэтому мне нужно поместить эту базу данных сверху:
База данных2
Исключение 1 (1 раз), когда последнее произошло: 29.07.2011 12.00
Исключение1 (22раз) в последний раз произошло: 21.10.1989 19: 30
Последнее исключение2 (2 раза) произошло 20.5.1980 14.50
База данных1:
Последнее исключение 1 (22 раза) произошло: 22.10.1989 19:30
Exception2 (2 раза) в последний раз произошло 20.5.1980 14.50
Так что, в принципе, я могу заказать журналы в базе данных по дате, но я не могу упорядочить базы данных по дате последнего появления, как я могу это решить?Viewcode (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 заранее