2

空のステートメントの Sum() を実行すると、「null 値は、null 非許容値型である System.Int32 型のメンバーに割り当てることはできません」というメッセージが表示されます。ResultView は正常に動作しますが、どちらか

var r = from v in DataContext.Visits
        join bs in DataContext.BaseContents on v.BaseContentID equals bs.Id
        where (bs.CreatedBy == userId) && (v.DateVisited.Year == workDate.Year) &&
        (v.DateVisited.Month == workDate.Month) && (v.DateVisited.Day == workDate.Day) &&
        (v.IsPreviewed == false) && (bs.ProfileProjectId != null)
        select v;

int? number = r.Sum( v => v.Counter);

また

var r = from v in DataContext.Visits
        join bs in DataContext.BaseContents on v.BaseContentID equals bs.Id
        where (bs.CreatedBy == userId) && (v.DateVisited.Year == workDate.Year) &&
        (v.DateVisited.Month == workDate.Month) && (v.DateVisited.Day == workDate.Day) &&
        (v.IsPreviewed == false) && (bs.ProfileProjectId != null)
        select v.Counter;

int? number = r.Sum(v);

同じ例外で失敗します。

4

3 に答える 3

4

これを試してください(更新済み):

int number = r.Sum(v => (int?)v.Counter) ?? 0;
于 2009-10-12T14:37:36.480 に答える
1

いくつかのサンプルデータを含めていただけますか? 少なくとも、r.ToList() を取得して、値を手で確認できます。私が見る限り、これはうまくいくはずです。また、v.BaseContentID、bs.Id、および v.DateVisited が null 可能でないことを確認してください。(特に ID 列) 参照されている null 許容整数は、その例外を引き起こす可能性があります。Select句のものだけでなく

var r = from v in DataContext.Visits
        join bs in DataContext.BaseContents on v.BaseContentID equals bs.Id
        where (bs.CreatedBy == userId) 
            && (v.DateVisited.Date == workDate.Date)
            && (!v.IsPreviewed) 
            && (bs.ProfileProjectId.HasValue)
        select v;

int? number = r.Sum(v => v.Counter);
于 2009-10-12T15:15:04.920 に答える
0

&& (v.Counter != null)合計を実行する前に、その値のすべてのヌルを除外するように見えます。

于 2009-10-12T14:38:42.170 に答える