2
var list = ProcessedInformationTable.AsEnumerable().ToList();
                        var minValue = list.Min(v => v["Rank"]);
                        var maxValue = list.Max(v => v["Rank"]);

上記のコードで、次の値がある場合

  • 列 A|ランク
  • ハート|9
  • 肺|10
  • minValue は 10 として返され、maxvalue は 9 として返されます。私の推測では、すべての値が int であるにもかかわらず、文字列として扱われるためです。これを回避する方法はありますか?

    4

    2 に答える 2

    3

    List<T>から を作成しないでくださいDataTable。必要なメモリが 2 倍になるだけで、何のメリットもありません。Linq-To-DataSetのサブセットであるを使用しLinq-To-Objectsます。

    列のタイプがすでに であるint場合、それに応じてキャストする必要があるか、実際にはstringです。次に、それを変更するか、ìnt.Parse最初に使用する必要があります:

    var rows = ProcessedInformationTable.AsEnumerable();
    int minValue = rows.Min(r => r.Field<int>("Rank"));
    int maxValue = rows.Max(r => r.Field<int>("Rank"));
    

    文字列の場合:

    int minValue = rows.Min(r => int.Parse(r.Field<string>("Rank")));
    int maxValue = rows.Max(r => int.Parse(r.Field<string>("Rank")));
    
    于 2013-09-13T20:27:04.510 に答える