LINQ查询未将所需结果作为字符串返回。为什么?

时间:2012-05-22 08:42:59

标签: c# .net linq

我的代码:

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()

尝试将结果作为元素返回并数据绑定到那个但仍然没有元素。

错误是什么???

2 个答案:

答案 0 :(得分:2)

如果存在数据,则必须是套管问题,您应始终使用ToUpper(),因为它已针对字符串相等性检查进行了优化。

此外,您应始终使用FirstOrDefault,因为如果有多个匹配项,Single将抛出异常,如果没有匹配项,First将抛出异常。尝试:

编辑:我还在输入的值上添加了Trim来清理空格。我还在locID参数上添加了一个空检查,因为如果它被传递,它将会被清空。最后,我在??语句中添加了return(合并),只是它返回null并且您在该字符串上执行其他操作(例如Trim或{{1}因为这会导致异常。

ToLowerCase

答案 1 :(得分:1)

首先,如果查询有多个匹配项,Single()将抛出异常。如果您期待多个回复,我建议您使用FirstOrDefault()

此外,我会尝试使用Trim()ToUpper()来消除可能阻止字符串匹配的任何空格/案例问题。