2

まったく新しいクラスを作成する必要があるのか​​、それとも何を作成する必要があるのか​​わかりません。asp.netは非常に初めてです。

これが私のコードです:

public static IEnumerable<DistInfo> GetGeneralInformation ( int ClientID )
{
    using ( var conn = new SqlConnection( GetConnectionString() ) )
    using ( var cmd = conn.CreateCommand() )
    {
        conn.Open();
        cmd.CommandText =
        @"SELECT i.GoLiveDate, i.FirstBonusRun, i.TechFName, i.TechLName, i.TechEmail, i.TechPhone, i.WebISPFName, i.WebISPLName, 
          i.WebISPEmail, i.WebISPPhone, i.FullFillFName, i.FullFillLName, i.FullFillEmail, i.FullFillPhone, d.FName,
          d.LName, d.HomePhone, d.Email
          FROM NC_Information i
          INNER JOIN Distributor d
            ON d.DistID = i.ClientID
          WHERE clientID = @value";
        cmd.Parameters.AddWithValue( "@value", ClientID );
        using ( var reader = cmd.ExecuteReader() )
        {
            while ( reader.Read() )
            {
                var distInfo = new DistInfo
                {
                    AnticipatedLaunchDate = reader.GetDateTime( reader.GetOrdinal( "GoLiveDate" ) )
                };
                yield return distInfo;
            }
        }
    }
}

アセンブリまたは参照が欠落していますか。これは、これを機能させるためにDistInfoクラスを作成する必要があることを意味しますか?

新しいDistInfoは、上記と同じエラーを出します。

申し訳ありませんが、私はasp.netを初めて使用し、この投稿のように私のものを機能させる方法を完全には理解していません。

「リーダーが閉じているときにReadを呼び出そうとしても無効です」というエラーが引き続き表示されます。

4

2 に答える 2

2

あなたは実際にというクラスを持っていますDistInfoか?コードはコンパイルされますか?そうでない場合は、少なくとも。を持つ新しいDistInfoクラスを追加する必要がありますDateTime。何かのようなもの:

public class DistInfo
{
    public DateTime AnticipatedLaunchDate { get; set; }
}

必要に応じて、そこにさらにプロパティを追加できます:)

于 2012-04-20T20:52:48.887 に答える
2

日付/時刻情報のみを返す必要がある場合は、次のようにメソッドを定義します

public static IEnumerable<DateTime> GetGeneralInformation(int ClientID)

そして、このようにあなたの読書ループを単純化してください

int goLiveDateOrdinal = reader.GetOrdinal("GoLiveDate");
while (reader.Read()) {
    yield return reader.GetDateTime(goLiveDateOrdinal);
}

複数の値を返す必要がある場合にのみ、クラスを作成する必要があります。

于 2012-04-20T21:37:54.460 に答える