我的代码:
public string LocName(string locID)
{
var name = (from a in idc.Locations
where a.ID.ToString() == locID
select a.Name).Single();
return name;
}
我需要它返回与ID匹配的Location名称作为TextBlock的字符串。相反,它不返回任何元素,我检查了ID是否正确所以它应该至少返回一个元素。
我也尝试过:
where a.ID == new Guid(locID)
以及
.First()
.FirstOrDefault()
尝试将结果作为元素返回并数据绑定到那个但仍然没有元素。
错误是什么???
答案 0 :(得分:2)
如果存在数据,则必须是套管问题,您应始终使用ToUpper()
,因为它已针对字符串相等性检查进行了优化。
此外,您应始终使用FirstOrDefault
,因为如果有多个匹配项,Single
将抛出异常,如果没有匹配项,First
将抛出异常。尝试:
编辑:我还在输入的值上添加了Trim
来清理空格。我还在locID
参数上添加了一个空检查,因为如果它被传递,它将会被清空。最后,我在??
语句中添加了return
(合并),只是它返回null并且您在该字符串上执行其他操作(例如Trim
或{{1}因为这会导致异常。
ToLowerCase
答案 1 :(得分:1)
首先,如果查询有多个匹配项,Single()
将抛出异常。如果您期待多个回复,我建议您使用FirstOrDefault()
。
此外,我会尝试使用Trim()
和ToUpper()
来消除可能阻止字符串匹配的任何空格/案例问题。