Linq select对于两个嵌套对象之一返回null
本文关键字:返回 null 对象 嵌套 select 于两个 Linq | 更新日期: 2023-09-27 18:10:34
我有一个Linq选择语句,应该返回有2个嵌套对象的对象。问题是,其中一个嵌套对象返回null,而另一个则按预期工作。
下面是要查询的对象:
public class CharInvCard
{
public int ID { get; set; }
public Character Character { get; set; }
public Card Card { get; set; }
public bool inDeck { get; set; }
public bool inHand { get; set; }
public bool inDiscard { get; set; }
}
这是我的Linq查询:
IQueryable<CharInvCard> CardsInHand = from x in db.CharInvCards
where x.Character.ID == character.ID && x.inHand == true
select x;
在得到这个查询的结果后,我做了一个foreach循环,开始如下:
foreach (CharInvCard deckCardRec in CardsInHand)
在调试时,如果我检查deckCardRec的内容,我看到它具有ID, inHand, inDeck, inDiscard甚至是一个嵌套的字符对象(及其属性)的所有属性,但Card总是空的。
我已经检查并仔细检查了数据库中的Card_Id列是否使用与Card表对应的正确ID填充。
是什么导致卡嵌套对象返回为空,而字符嵌套对象正确返回?
您在linq查询中引用Character
,因此包含它。你没有引用Card
。尝试加载Cards
如下:
IQueryable<CharInvCard> CardsInHand = from x in db.CharInvCards.Include("Cards")
where x.Character.ID == character.ID && x.inHand == true
select x;
我假设你的导航属性名为"Cards"。