1

linq のように 2 つの異なるデータテーブルに参加する必要があります。

   // let use Linq
        var DateMarket = from p in IndexPrice.AsEnumerable()
                         join q in TickerPrice.AsEnumerable() on p.Field<DateTime>("DATE") equals q.Field<DateTime>("DATE") into UP
                         from q in UP.DefaultIfEmpty()
                         where p.Field<DateTime>("DATE") != null && !q.IsNull("CHG_PCT_1D")
                         select TestRecap.Rows.Add(p.Field<DateTime>("DATE"), q.Field<Double>("CHG_PCT_1D")) ;

ただし、条件を使用しても:

  where p.Field<DateTime>("DATE") != null && !q.IsNull("CHG_PCT_1D")

この行にはまだ NullReferenceException があります。理由はわかりますか?

ありがとう

4

2 に答える 2

1

from q in UP.DefaultIfEmpty()、 に一致するqものが見つからない場合、null であるデフォルト値を使用することを示します (および関数pと同じ)。FirstOrDefault()SingleOrDefault()

を確認するq != nullと、動作するはずです。

于 2012-01-10T07:58:49.367 に答える
0

結合後の行では、p と q のいずれかが null になる可能性があります。それらの無効化を確認してください。

where p!=null 
   && p.Field<DateTime>("DATE") != null 
   && q != null 
   && !q.IsNull("CHG_PCT_1D")
于 2012-01-10T07:54:16.267 に答える