2012-02-21 5 views
0

以下に示すように、Linqを介してMemberMaintenanceDataオブジェクトのリストを取得しようとしています。問題は、m.StartDateがnullの場合はいつでも、NullObjectReferenceエラーがスローされていることです。パラメータがnullの場合、投影リストの作成中にLinqが失敗する

var filteredMembers = from m in members.ToList() 
    select new MemberMaintenanceData 
     { 

       MemberName = m.Name, 
       SSN = m.SSN, 
       PlanName = m.PlanName, 
       EffectiveDate = m.StartDate ?? null, 
       //EffectiveDate = m.StartDate ?? DateTime.Now, 
       GroupName = "" 
      }; 

public class MemberMaintenanceData 
{ 

    public string MemberName { get; set; } 
    public string SSN { get; set; } 
    public string PlanName { get; set; } 
    public DateTime? EffectiveDate { get; set; } 
    public string GroupName { get; set; } 
} 

MemberMaintenanceDataのEffectiveDateはnullableとして宣言されており、nullかどうかを確認しています。不思議なEffectiveDate = m.StartDate ?? DateTime.Now行は問題なく動作します。解決方法を教えてください。私はちょうどREPROを実行し、期待どおりに動作します

おかげ

+0

私の最初の推測は、EffectiveDateの宣言の疑問符です。しかし、私は専門家ではありません – user85569

+0

両方のプロパティが 'DateTime?'の場合、なぜ 'EffectiveDate = m.StartDate'をしないのですか?この例外はどこにスローされますか?実際に 'filteredMembers'を使用するコードを表示してください – BrokenGlass

答えて

1

。私はStartDateがここの問題だとは思わない。私は、NullReferenceExceptionがどこから来ているのか誤解していると思います。

あなたのメンバーリストにはnull参照が含まれていると思います。

+0

当初私はそう思っていました。しかし、私がEffectiveDate = m.StartDateを使用していたら? DateTime.Nowそれは正常に動作します。メンバーリストにヌル参照があった場合は、ここにもフィールドがあります。 StartDateがnullの場合にのみ失敗します。いずれかの文字列がnullだった場合は正常に動作します。 – user466663

+0

Linq to SQLを使用していませんか?これは純粋なLinq to Objects(?)です。実行可能なreproを投稿してください。 – usr

+0

Linq To Sqlではありません。それはオブジェクトへのLinqです。しかし、オブジェクトはjava/oracle上で動作するイントラネットWebサービスから取得されます。 – user466663

関連する問題