gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:28:36 25 4
gpt4 key购买 nike

我的代码:

public string LocName(string locID)
{
var name = (from a in idc.Locations
where a.ID.ToString() == locID
select a.Name).Single();
return name;
}

我需要它返回与 ID 匹配的位置名称作为 TextBlock 的字符串。相反,它不返回任何元素,我已经检查过 ID 是否正确,因此它应该至少返回一个元素。

我也试过:

where a.ID == new Guid(locID)

还有

.First()
.FirstOrDefault()

已尝试将结果作为元素返回并对其进行数据绑定(bind),但仍然没有元素。

错误是什么???

最佳答案

如果数据存在,一定是大小写问题,您应该始终使用 ToUpper(),因为它针对字符串相等性检查进行了优化。

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

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

public string LocName(string locID)
{
if (locID == null) return string.Empty;

var name = (from a in idc.Locations
where a.ID.ToString().Trim().ToUpper() == locID.Trim().ToUpper()
select a.Name).FirstOrDefault();

return name ?? string.Empty;
}

关于c# - LINQ 查询未将所需结果作为字符串返回。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10698590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com