我確信這個問題有一個簡單的答案,但我似乎無法用短語搜索來獲得正確的結果。計算日期的實例
在我的控制器中,讓我們說我有一個類x的實例列表,它有一個類y的成員變量,它包含一個日期變量。我想要做的是計算每個日期有多少個實例,來構建一個圖。所以我想要的就是一個數組,每個不同的日期有一行,以及日期發生次數。
任何建議,最好的方式來做到這一點,將不勝感激。
我確信這個問題有一個簡單的答案,但我似乎無法用短語搜索來獲得正確的結果。計算日期的實例
在我的控制器中,讓我們說我有一個類x的實例列表,它有一個類y的成員變量,它包含一個日期變量。我想要做的是計算每個日期有多少個實例,來構建一個圖。所以我想要的就是一個數組,每個不同的日期有一行,以及日期發生次數。
任何建議,最好的方式來做到這一點,將不勝感激。
聽起來像你想要這樣的東西。
var countByDate = items.GroupBy(x => x.Invoice.ReceivedDate) // Or whatever
.Select(g => new { Date = g.Key, Count = g.Count() })
.OrderBy(pair => pair.Date);
.ToArray();
LINQ岩石:)
使用擴展方法應該有所幫助。這是我所能做的最好的,不知道你有什麼類型:
ListOfx.Select(x => x.ClassY.Date)
上一行會給你所有的日期。然後你可以使用GroupBy按照它們的值對它們進行分組。這應該給你一個列表清單。
ListOfx.Select(x => x.ClassY.Date).GroupBy(x => x.Date)
我認爲這應該工作。我目前無法嘗試代碼。
他需要計算任何日期的頻率,不只是讓他們全部。 – 2013-02-22 13:30:00
您可以使用LINQ的Enumerable.GroupBy
:
var dayGroups = listX.GroupBy(x => x.Y.DateTimeVar.Date)
.Select(g => new { Day = g.Key, Count = g.Count() })
.ToArray();
現在你擁有你所需要的日期和的發生:
foreach(var dayGroup in dayGroups)
{
Console.WriteLine("Day: {0} Count: {1}", dayGroup.Day.ToString(), dayGroup.Count);
}
假設DateTimeVar
是財產,你的一天要組。
的代碼可能是笨拙的,但是這應該爲你工作:
using System;
using System.Collections.Generic;
using System.Linq;
namespace App
{
class Program
{
static void Main(string[] args)
{
List<X> xs = new List<X>
{
new X { Y = new Y {D = DateTime.Now}},
new X { Y = new Y {D = DateTime.Now}},
new X { Y = new Y {D = DateTime.Now}},
};
IEnumerable<DateTime> ds = xs.Select(x => x.Y.D).Distinct();
var q = from d in ds
select new
{
D = d,
Count = xs.Count(x => x.Y.D.Equals(d))
};
foreach (var i in q)
{
Console.WriteLine(i);
}
}
class X
{
public Y Y { get; set; }
}
class Y
{
public DateTime D { get; set; }
}
}
}
請列出類認定中這裏 – Yasser 2013-02-22 13:27:27