繁体   English   中英

帮助排除LINQ查询故障

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM