我在数据库中的表中有一个整数列,我想选择它,但它给我一个不能从int转换为字符串的异常
示例我想从CategoryID
表中选择Category
CategoryName="Cat"
categoryID
是int& categoryName
是字符串
我试过的linq查询
string Category_ID = (from p in StaticVa.new_data_context.Categories
where p.CategoryName == Category_Name
select p.CategoryID).ToString();
它返回"SELECT [t0].[CategoryID]\r\nFROM [dbo].[Category] AS [t0]\r\nWHERE [t0].[CategoryName] = @p0\r\n"
答案 0 :(得分:1)
试
int Category_ID = (from p in StaticVa.new_data_context.Categories
where p.CategoryName == Category_Name
select p.CategoryID).FirstOrDefault();
LINQ正在尝试返回与where子句匹配的每个id的IQueryable,如果您只需要将其指定为单个或第一个
答案 1 :(得分:1)
(from p in StaticVa.new_data_context.Categories
where p.CategoryName == Category_Name
select p.CategoryID)
表示一个表达式,在执行时,将返回一组项目。
所以你说:
var catIds = (from p in StaticVa.new_data_context.Categories
where p.CategoryName == Category_Name
select p.CategoryID);
然后你得到第一个(即强迫上面的表达式执行并开始返回值):
int? Category_ID = catIds.FirstOrDefault();
如果没有返回第一行,则需要int?
FirstOrDefault()
将返回null。
但是,如果您确定它返回至少一行那么您可以说
int Category_ID = catIds.First();
如果您确定它只返回一行,那么您可以说
int Category_ID = catIds.Single();