如何从LINQ2SQL查询中获取可空项
本文关键字:获取 查询 LINQ2SQL | 更新日期: 2023-09-27 17:51:22
我有一个LINQ2SQL查询,用于检索ID (PK,而不是null)。下面是查询:
int masterEntityID;
int payeeID;
int chargePayeeID;
try
{
using (TestDataContext os = new TestDataContext())
{
string entityName = tbSearch.Text;
var getMasterID = from r in os.Entities
where r.Name == entityName
select r.ID;
masterEntityID = getMasterID.First(); //this is working FINE!
var getPayeeID = from pid in os.Entities
where pid.Name == entityName
select pid.Payee_ID;
payeeID = getPayeeID.First(); //This is giving me an err: Cannot implicitly convert type 'int?' to 'int'. An explicit conversion exists (are you missing a cast?)
};
数据类型:ID和Payee_ID都是int。但是ID是Pkey而Payee_ID不是!
如何获取从getPayeeID到payeeID的值?谢谢!
getPayeeID.First().GetValueOrDefault()
如果您确信Payee_Id永远不会为空,那么只需强制转换值:
payeeID = (int)getPayeeID.First();
由于该值为int?
,您可以使用Value
属性从中获得int
:
payeeID = getPayeeID.First().Value;
int?
是Nullable<int>
您可以使用FirstOrDefault()或将payeeID声明为int?然后根据你的需要使用它(如果它是null,你应该尝试做任何事情…)
似乎你的实体的Payee_ID属性是可空的,这是因为它代表了数据库中的一个可空列。所以,你不应该在int中接收它的值,它是不可空的。您可以在可为空的int中获取它的值,如
int? payeeID = payeeID = getPayeeID.FirstOrDefault();
或
var payeeID = payeeID = getPayeeID.FirstOrDefault();
稍后您可以使用
检查payeeID值是否为空或不为空。if(payeeID.HasValue)
{
int x = payeeID.Value; //Value property of nullable int is an integer value and accessing it would through exception if HasValue property is false
}