我有一個項目的集合,其中每個項目都有一個「日期」字段(代碼如下)。如何處理LINQ中的源數據更改?
我想填補使用LINQ的集合中日期中的任何空白。特別是,我希望得到的序列包含原始序列中第一天和最後一天之間的所有天數。
除此之外,我的結果LINQ查詢應該能夠處理原始序列的任何修改。那就是我無法提前計算最小和最大日期。
所以我試了下面的代碼,但它試圖計算序列的最小值和最大值時失敗。我正在尋找一個「懶惰」的選擇。
感謝您的幫助 康斯坦丁
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
namespace consapp
{
class C
{
public DateTime date;
public int? value;
}
static class Program
{
static IEnumerable<C> dates(DateTime d0, DateTime d1)
{
for (var d = d0; d <= d1; d = d.AddDays(1))
{
yield return new C { date = d };
}
}
static void Main(string[] args)
{
var xs = new ObservableCollection<C>();
var q = from d in dates(xs.Min(y => y.date), xs.Max(y => y.date))
join x in xs on d.date equals x.date into js
from j in js.DefaultIfEmpty()
orderby d.date
select new { date = d.date, value = j != null ? j.value : null };
xs.Add(new C { date = DateTime.Parse("11/10/11") });
xs.Add(new C { date = DateTime.Parse("02/02/11") });
xs.Add(new C { date = DateTime.Parse("11/24/11") });
xs.Add(new C { date = DateTime.Parse("09/09/11") });
xs.Add(new C { date = DateTime.Parse("11/10/11") });
foreach (var x in q)
{
Console.WriteLine(x.date.ToShortDateString());
}
}
}
}
你好konstantin,因爲Stackoverflow是一個社區編輯的QnA列表,你應該編輯你的問題標題。或者你對「需要linq幫助」這個問題期待什麼樣的答案?問候 – Zeemee 2010-11-11 16:08:41
@穆爾穆特:謝謝,希望新的主題行更具體 – akonsu 2010-11-11 16:15:34