我有以下代码段。 其中我只想将PartyName作为字符串返回。 但我得到错误:“不能隐含转换类型'System.Linq.Iqueryable到字符串” 如果我想只返回字符串然后该怎么办? 请帮帮我。
return objDatabase.FAPARs
.Where(f => (f.PARTY_CODE == "P003"))
.Select(f => f.PARTY_NAME);
答案 0 :(得分:5)
IQueryable<string>
表示可以返回任意数量的字符串的查询。您需要一个字符串 - 因此您需要决定在各种情况下要做什么:
允许您确定所有这些的方法集是:
Single
- 如果完全一个结果SingleOrDefault
- 如果有多个结果则失败,如果没有结果则返回First
- 如果没有结果则失败,返回第一个FirstOrDefault
- 如果没有结果,则返回null,或许多Last
- 如果没有结果则失败,返回最后一个LastOrDefault
- 如果没有结果,则返回null,或许多在每种情况下,“失败”表示“抛出异常”。 (IIRC总是InvalidOperationException
,至少在LINQ to Objects中,但我可能是错的。)
因此,如果您使用必须存在的ID进行查询(即如果不存在则为错误),那么Single
可能是合适的。如果您使用可能不存在的ID进行查询,请使用SingleOrDefault
并检查返回值是否为空。如果您不按ID查询,则可能想要使用FirstOrDefault
或只是迭代结果。
(注意,默认值为null
是由于这是一个返回字符串的查询,而字符串是一个引用类型。通常它是元素类型的默认值 - 所以如果你有一个{{ 1}},返回的默认值为0.)
答案 1 :(得分:0)
return objDatabase.FAPARs.FirstOrDefault(f => f.PARTY_CODE.Equals("P003")).PARTY_NAME
答案 2 :(得分:0)
尝试
return objDatabase.FAPARs .Where(f => (f.PARTY_CODE == "P003")) .Select(f => f.PARTY_NAME).SingleOrDefault();
答案 3 :(得分:0)
试试这个:
return objDatabase.FAPARs.Where(f => (f.PARTY_CODE == "P003")).Single(f => f.PARTY_NAME);
答案 4 :(得分:0)
return objDatabase.FAPARs.OfType<FAPAR>()
.Where(f => (f.PARTY_CODE == PartyCode && f.COMP_NO == ComCode))
.Select(f => f.PARTY_NAME).SingleOrDefault();