0

次の形式のデータを含むリストがあります。

TF000040070004-29/08/12
TF000040070004-29/08/12
TF000040070005-29/08/12
TF000020010004-29/08/12
TF000020010007-29/08/12
TF000020010002-29/08/12
TF000010010012-29/08/12
TF000010010014-29/08/12
TF000010010014-29/08/12
TF000010010005-29/08/12
TF000010010005-29/08/12
TF000010010006-29/08/12
TF000010010002-29/08/12
TF000010010008-29/08/12
TF000010010008-29/08/12
TF000010010008-29/08/12
TF000010010008-29/08/12

次の linq クエリを使用して、カウント、キー値、および最小値と最大値を取得しました。今、特定の日付のデータを選択したいと思います。

var serialNumbers = from sn in code
                    group sn by sn.Substring(0, 10) into g
                    select new { Key = g.Key, 
                                 Cnt = g.Count(), 
                                 Min = g.Min(v => v.Substring(10)), 
                                 Max = g.Max(v => v.Substring(10)) };
4

3 に答える 3

1

次のことを試してください。

from sn in rawData where sn.Substring(15, 8) == "29/08/12"
                   select sn;

次に、それにlinqクエリ(group byなど)を追加できます...

于 2012-09-03T08:50:06.033 に答える
0

まず、データをより適切に操作できるように変換する必要があります。

var transformed = code.Select(item=>
{
    var parts = item.Split(new string[]{"-"}, StringSplitOptions.None);
    var keyPart = parts[0].Substring(2);
    var key = long.Parse(keyPart);
    var date = DateTime.Parse(parts[1]);
    return new KeyValuePair<long, DateTime>(key, date);
}

変換後、厳密に型指定されたデータに対して必要なクエリを実行します。

var date = DateTime.Today; // your date here
var result = transformed.Where(item => item.Value == date);
于 2012-09-03T08:59:53.583 に答える
0

文字列の末尾に有効な DateTime がない場合、これは失敗します...

var selectionDate = new DateTime(2012,8,29);

var serialNumbers = from sn in code 
            where DateTime.Parse(
                         sn.Trim().Substring(sn.Trim().Length-8,8), 
                         new DateTimeFormatInfo {ShortDatePattern="dd/MM/yy"}) == 
                              selectionDate;
             group sn by sn.Substring(0, 10) into g 
             select new { Key = g.Key,  
                          Cnt = g.Count(),  
                          Min = g.Min(v => v.Substring(10)),  
                          Max = g.Max(v => v.Substring(10)) }; 
于 2012-09-03T08:54:37.183 に答える