int propertyCount = PropertyHandler.PropertyList.Count(x => x.Owner == charData.CharacterData.CharacterID && !x.IsRegistered);
此行检查属性与所有者ID的关联程度。我知道主人拥有3处房产。 Linq函数的第二部分检查属性是否已注册。业主有2个注册的房产,1个未注册的房产。这意味着它应返回值1,但无论我尝试哪种类型的代码,它总是返回3.
我尝试过以下功能:
int propertyCount = PropertyHandler.PropertyList.Count(x => x.Owner == senderdata.CharacterData.CharacterID && x.IsRegistered == false);
int propertyCount = PropertyHandler.PropertyList.Where(x => x.Owner == senderdata.CharacterData.CharacterID && x.IsRegistered == false).Count();
int propertyCount = PropertyHandler.PropertyList.Where(x => x.Owner == senderdata.CharacterData.CharacterID).Where(x => x.IsRegistered == false).Count();
我也试过在每个函数中没有== false
部分。它总是返回3,即使它应该是1.
[Column("IsRegistered")]
public bool IsRegistered { get; set; }
这是IsRegistered
的数据库列:
它显示该列的结构,即tinyint
。我不知道还能尝试什么。我需要它来返回正确的值(1)而不是3。
答案 0 :(得分:1)
IsRegistered
为tinyint
。 According to Microsoft, mapping it to bool
does not work
您可以通过以下两种方式之一解决此问题:
bit
。这是SQL Server中映射到C#的bool
的类型。byte
,并与1
或0
进行比较。仅当您无法灵活地更改数据库中的列类型时,才使用此方法。参考:EF type mapping。