如何解决LINQ中的错误:数据为null或空
本文关键字:错误 数据 或空 null 何解决 解决 LINQ | 更新日期: 2023-09-27 18:08:18
我有以下代码。我想检查结果是否是null
与if条件,但它总是显示一个错误。如何解决这个问题?
string StrRefNo = Request.QueryString["ref"];
string[] SMSid = StrRefNo.Split('$');
DownloadsDbEntities db = new DownloadsDbEntities();
var data = (from d in db.SMSLink_Expiry
where d.RefNo == SMSid[0]
&& d.SMSLink.ID == Convert.ToInt32(SMSid[1])
select d).ToList();
if (data.Count > 0)
{
string ss = "yes";
}
在LINQ to Entities中不支持LINQ表达式节点类型'ArrayIndex'。
由于表达式不能翻译成SQL,因此将其从语句中拉出
string SMSId0 = SMSid[0];
int SMSId1 = Convert.ToInt32(SMSid[1]);
var data = (from d in db.SMSLink_Expiry
where d.RefNo == SMSId0
&& d.SMSLink.ID == SMSId1
select d).ToList();
这应该可以解决您的问题:
string StrRefNo = Request.QueryString["ref"];
string[] SMSid = StrRefNo.Split('$');
var ref = SMSid[0];
var smsLinkId = Convert.ToInt32(SMSid[1]);
DownloadsDbEntities db = new DownloadsDbEntities();
var data = (from d in db.SMSLink_Expiry
where d.RefNo == ref
&& d.SMSLink.ID == smsLinkId
select d).ToList();
if (data.Count > 0)
{
string ss="yes";
}
Linq不支持很多事情,因为它在内部将查询转换为SQL。
参考:在LINQ to Entities
你可以试试:
string[] SMSid = StrRefNo.Split('$');
var refno=SMSid[0];
var id=Convert.ToInt32(SMSid[1];
DownloadsDbEntities db = new DownloadsDbEntities();
var data = (from d in db.SMSLink_Expiry
where d.RefNo == refno
&& d.SMSLink.ID == id)
select d).ToList();