1

日時値を持つ列を含む c# のデータテーブルがあります。60秒のマージンで個別の値を取得したい。

私の現在のコードは次のようなものです:

  string[] distinctCols = { "AssetId", "LDOM" };
  DataTable distinctAssetId = dt.DefaultView.ToTable(true, distinctCols);

これはまったく問題なく機能しており、ユニークな記録が得られます。ただし、60 秒のマージンを持つ一意のレコードが必要です。

たとえば、「06-11-2013 12:56:01」と「06-11-2013 12:56:00」の LDOM 値は一意と見なす必要があります。

どうすればこれを達成できますか。

4

1 に答える 1

2

これを行う方法の例を次に示します。

var dates = new[] 
    { 
        new DateTime(2013, 11, 6, 12, 56, 1),
        new DateTime(2013, 11, 6, 12, 56, 0),  
        new DateTime(2013, 11, 6, 12, 56, 50),  
        new DateTime(2013, 11, 6, 12, 10, 0)  
    };
var q = dates.GroupBy(d => d.Ticks / TimeSpan.TicksPerMinute)
       .Select(g => g.First());

これは以下を返します:

2013-11-06 12:56:01
2013-11-06 12:10:00

linq を使用して DataTable 列に同じ手法を適用しても問題はないはずです。

于 2013-11-06T10:00:10.130 に答える