2

私が抱えている小さな問題を皆さんが解決できることを願っています。datareader 値が指定された dateTime 値よりも小さいかどうかを確認しようとするとエラーが発生し、助けが必要です。

DateTime feedate = new DateTime(2013,09,01);
if (rsData["M_Start"] != DBNull.Value) & (Convert.ToDateTime(rsData["M_Start"]).ToString("yyyy/mm/dd") < feedate)

したがって、上記は私が持っているものであり、私が得ているエラーは「割り当て呼び出しのインクリメントデクリメントと新しいオブジェクト式のみをステートメントとして使用できます」というメッセージです。

C# はまだ私にとって本当に新しいので、少し困惑しています。

ありがとう。

4

2 に答える 2

6
  1. &&代わりに論理 and を使用する必要があります
  2. DataReader.IsDBNull代わりに使用する必要があります
  3. DateTimeaと a を比較するべきではありませんString。なぜそれを文字列に変換するのですか?

DateTime feedate = new DateTime(2013, 09, 01);
if (!rsData.IsDBNull(rsData.GetOrdinal("M_Start")) && (DateTime)rsData["M_Start"] < feedate)
{
    // ...
}
于 2013-04-29T09:08:15.753 に答える
0

括弧と「and」演算子が間違っています。コードは次のようになります。

DateTime feedate = new DateTime(2013,09,01);
if (rsData["M_Start"] != DBNull.Value && Convert.ToDateTime(rsData["M_Start"]).ToString("yyyy/mm/dd") < feedate)
{
    // code
}

&演算子はビット単位の or ですが、演算子&&は論理 or です。このifステートメントは、次のように括弧内に条件を取りますif (… condition goes here …)

注: Tim Schmelter が回答で指摘したように、他にもいくつかの欠陥があります。

于 2013-04-29T09:06:29.493 に答える