まず、この質問に対する回答を検索しましたが、私が使用している機能が何であるかわからないため、何も見つかりませんでした。LINQ:返されるオブジェクトに新しいオブジェクトを宣言できないのはなぜですか?
以下のコードのDBEntitiesは、Oracle DB接続のためにdevartによって生成されたものです。
最初の例は正常に動作し、2番目の例ではなぜSystem.NullReferenceExceptionが返されますか?
有効コード:
using (DBEntities context = new DBEntities())
{
var infos = (from info in context.Infos
where info.Index == index
orderby info.Name
select new
{
Name = info.Name,
MRN = info.MRN,
UnitNumber = (info.UnitNum == null) ? -1 : (decimal)info.UnitNum,
UnitName = (info.UnitName == null) ? String.Empty : info.UnitName
}).Distinct();
foreach (var info in infos)
{
// *do stuff*
}
}
コード(foreachのに達すると、例外のみ見られます)例外を与える:
using (DBEntities context = new DBEntities())
{
var infos = (from info in context.Infos
where info.Index == index
orderby info.Name
select new Member()
{
Name = info.Name,
MRN = info.MRN,
CurrentUnit = new Unit()
{
UnitNumber = (info.UnitNum == null) ? -1 : (decimal)info.UnitNum,
UnitName = (info.UnitName == null) ? String.Empty : info.UnitName
}
}).Distinct();
foreach (Member info in infos)
{
// *do stuff*
}
}
EDIT: は、私はこのことを追加したいです同様に機能する:
using (DBEntities context = new DBEntities())
{
var infos = (from info in context.Infos
where info.Index == index
orderby info.Name
select new Member()
{
Name = info.Name,
MRN = info.MRN
}).Distinct();
foreach (Member info in infos) //Exception is thrown here.
{
// *do stuff*
}
}
例外はありますか? – Thebigcheeze
@Thebigcheeze System.NullReferenceException – bsara
あなたのコレクションにデータが含まれていますか? – Tigran