5

TimeSpans のリストを取得しましたが、5 時間を超えるものがあるかどうかを確認する必要があります。リストをループできることはわかっていますが、可能であれば、List<> の組み込み関数のいずれかを使用して状態を確認したいと思います。

if (driverSchedules.GetAllShifts().Contains(delegate(TimeSpan ts) { return ts > new TimeSpan(5,0,0);}))
{
    return true;
}

*GetAllShifts はリストを返します。

私が得ているエラーは言う:

"Cannot convert anonymous method to type 'System.TimeSpan' because it is not a 
delegate type"

私が知る限り、「デリゲートタイプ」はSystem.TimeSpan

4

2 に答える 2

3

1.:Contains()デリゲートを引数として取りません。特定の TimeSpan 値が必要です。

2.:コレクション内のアイテムが特定の条件に一致するかどうかを調べたいので、使用ますAny()。デリゲートを受け入れます。

return driverSchedules.GetAllShifts().Any(ts => ts > new TimeSpan(5,0,0));
于 2012-10-03T22:38:58.367 に答える
-1

使用Contains()している は、デリゲート型ではなく、TimeSpan オブジェクトをパラメーターとして想定しています。Any<>デリゲート カスタム比較子を受け入れる拡張機能を使用したい。

if (driverSchedules.GetAllShifts().Any<TimeSpan>((ts) => { return ts > new TimeSpan(5, 0, 0); }))
{
    return true;
}
于 2012-10-03T22:40:21.407 に答える