[英]Help troubleshooting LINQ query
我有这个LINQ查询:
var returnList = from TblItemEntity item in itemList
join TblClientEntity client in clientList
on item.ClientNo equals client.ClientNumber
join TblJobEntity job in jobList
on item.JobNo equals job.JobNo
where item.ClientNo == txtSearchBox.Text //Is this filter wrong?
orderby client.CompanyName
select new { FileId = item.FileId, CompanyName = client.CompanyName, LoanStatus = item.LoanStatus, JobNo = job.JobNo, JobFinancialYE = job.JobFinancialYE, VolumeNo = item.VolumeNo };
为什么这不返回任何东西?
P / S:它们都是字符串数据类型。
您是否尝试过删除联接的部分以找出问题所在,然后将这些已删除的部分一个接一个地重新添加? 从...开始:
var returnList = from TblItemEntity item in itemList
where item.ClientNo == txtSearchBox.Text //Is this filter wrong?
select new { FileId = item.FileId };
由于您正在执行内部联接,因此其中一个联接可能会过滤掉所有项目。
编辑:调试时不扩展返回类型, select new {FileId = item.FileId}
是您需要调试的全部。
为什么这不返回任何东西?
有两种可能性:
1)联接为空,即没有项目,客户端和作业具有匹配的ID。
2)对于连接中的所有记录, where
子句为false。
要解决此问题,您将必须删除where
子句和/或某些连接的表,以查看获得任何结果所需的时间。
仍在等待该示例数据。
您说您正在通过其他属性过滤结果,为什么这应该有所不同? 假设用户输入的txtSearchBox
具有合理的值,请尝试将这些值打印到调试控制台上,看看是否获得合理的结果。 查看输出窗口。 尝试以下版本的查询:
Func<string,bool> equalsSearch = s =>
{
var res = s == txtSearchBox.Text;
Debug.WriteLine("\"{0}\" == \"{1}\" ({2})", s, txtSearchBox.Text, res);
return res;
};
var returnList = from TblItemEntity item in itemList
join TblClientEntity client in clientList
on item.ClientNo equals client.ClientNumber
join TblJobEntity job in jobList
on item.JobNo equals job.JobNo
//where item.ClientNo == txtSearchBox.Text //Is this filter wrong?
where equalsSearch(item.ClientNo) //use our debug filter
orderby client.CompanyName
select new { FileId = item.FileId, CompanyName = client.CompanyName, LoanStatus = item.LoanStatus, JobNo = job.JobNo, JobFinancialYE = job.JobFinancialYE, VolumeNo = item.VolumeNo };
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.