我有以下LINQ表达式没有返回相应的响应
var query = from quote in db.Quotes
where quote.QuoteStatus == "Estimating" || quote.QuoteStatus == "Rejected"
from emp in db.Employees
where emp.EmployeeID == quote.EmployeeID
orderby quote.QuoteID descending
select new
{
quote.QuoteID,
quote.DateDue,
Company = quote.Company.CompanyName,
Attachments = quote.Attachments.Count,
Employee = emp.FullName,
Estimator = (quote.EstimatorID != null && quote.EstimatorID != String.Empty)
? db.Employees.Single (c => c.EmployeeID == quote.EstimatorID).FullName
: "Unassigned",
Status = quote.QuoteStatus, Priority = quote.Priority
};
问题出在Estimator = (quote.EstimatorID != null && quote.EstimatorID != String.Empty) ? db.Employees.Single(c => c.EmployeeID == quote.EstimatorID).FullName : "Unassigned"
部分。
我从来没有得到它评价为“未分配”,对于那些应该是,它只返回null
。我写错了吗?
答案 0 :(得分:1)
试试这个,看看你是否收到了相同的值:
Estimator = ((!string.IsNullOrEmpty(quote.EstimatorID) && !string.IsNullOrEmpty(quote.EstimatorID.Trim())
? (db.Employees.Single(c => c.EmployeeID == quote.EstimatorID)).FullName
: "Unassigned")
如果这不起作用,请尝试用false替换三元表达式(!string.IsNullOrEmpty部分)中的检查,看看是否达到“未分配”。我发现有时,当你在LINQ查询中使用三元表达式时,你必须将整个事物包装在括号中。
答案 1 :(得分:1)
我认为你的表达是正确的,但为了清楚起见,我建议将其更改为!string.IsNullOrEmpty(quote.EstimatorID)
。
但请注意,如果db.Employees.Single(c => c.EmployeeID == quote.EstimatorID).FullName
返回null,则表达式仍可返回null。
答案 2 :(得分:0)
然后看起来quote.EstimatorID
不是null或空字符串。 db.Employees.Single()在这里返回null吗?调试它 - 将断点放入表达式的那些部分(如果需要,将它们放在不同的行上)。如果你不能做那些调用Debug.WriteLine()或类似的方法。