1

CopyToDataTable メソッドでこのエラーが発生します。

ArgumentNullException 値を null にすることはできません。パラメータ名: ソース

次の手順に従ってください - http://msdn.microsoft.com/en-us/library/bb669096%28v=vs.110%29.aspx

public DataTable GetAllRecords()
  {
    try
     {
       DataTable dt = new DataTable();
       IEnumerable<DataRow> query = ((from p in MedianDB.tblCountries
                  select p).OrderBy(p => p.CountryName)) as IEnumerable<DataRow>;
       query.CopyToDataTable<DataRow>(dt,LoadOption.PreserveChanges);
       return dt;                
     }
   catch (Exception ex)
     {
       throw ex;
     }
  }

.Net Framework 4.0、エンティティ データ モデルの使用

4

1 に答える 1

1

さて、これはかなり簡単です。あなたは取得してArgumentNullExceptionおり、それは次のように文書化されています:

ソース IEnumerable シーケンスが null であるか、宛先 DataTable が null です。

dtそうではないことを私たちは知っています。nullこれは、問題はあなたquerynull. AsEnumerableしたがって、それを修正するには、拡張機能を活用できるはずです。

IEnumerable<DataRow> query = (from p in MedianDB.tblCountries
                              select p)
                             .OrderBy(p => p.CountryName)
                             .AsEnumerable();
query.CopyToDataTable<DataRow>(dt,LoadOption.PreserveChanges);

取得していた結果を としてキャストするだけではいけません。それIEnumerable<DataRow>を にする必要がありますこのコード は、 を提供していました。IEnumerable<DataRow>as IEnumerable<DataRow>null


参考までに、プロセスでスタックトレースが失われているため、これcatchは実際にはスローするよりも悪いです:

catch (Exception ex)
{
    throw ex;
}

try/catchあなたが本当にそれを処理するつもりがない場合は、すべて一緒に取り除いてください.

于 2013-10-31T12:29:23.210 に答える