C# 如何将linq查询结果获取为int
下面的查询返回单个值,例如50。我想把它赋值给int,这样我就可以用这个值做一些计算。我该怎么做C# 如何将linq查询结果获取为int,c#,linq,C#,Linq,下面的查询返回单个值,例如50。我想把它赋值给int,这样我就可以用这个值做一些计算。我该怎么做 var LTLimit = from a in dbavailability.tACLicenseTypes where a.License_Type == "Long Term" select a.Limit; string AST = ""; 查询的返回类型是什么? 如果返回的类型是另一种原始数据类型(如字符
var LTLimit = from a in dbavailability.tACLicenseTypes
where a.License_Type == "Long Term"
select a.Limit;
string AST = "";
查询的返回类型是什么? 如果返回的类型是另一种原始数据类型(如字符串),则可以尝试使用以下命令将其转换为整数:
var i = Convert.ToInt32(LTLimit);
或使用:
int.TryParse(LTLimit, out var i);
但是,如果数据首先以正确的类型存储会更好。我不完全清楚您在问什么,但您的Linq查询返回的数据类型可能不是
int
,您想将其转换为int吗?如果是,只需将其转换为int:
var LTLimit = (from a in dbavailability.tACLicenseTypes
where a.License_Type == "Long Term"
select a.Limit).ToList();
int LTLimitInt = 0
if (!int.TryParse(LTLimit.First(), out LTLimitInt))
{
Console.WritLine("LTLimit is not a number!")
}
由于您已经更新了问题,下面是一个将返回的数字转换为int的解决方案,将其乘以2,然后将结果转换为字符串:
var LTLimit = (from a in dbavailability.tACLicenseTypes
where a.License_Type == "Long Term"
select a.Limit).ToList();
int LTLimitInt = 0;
string multipliedResultStr = string.Empty;
if (!int.TryParse(LTLimit.First(), out LTLimitInt))
{
Console.WritLine("LTLimit is not a number!")
}
else
{
multipliedResult = (LTLimitInt * 2).ToString();
Console.WriteLine(string.Format("Result is {0}, multipliedResult ));
}
编辑
更正了从列表中获取第一项的代码。以下代码是检索查询中返回的第一个整数的一种方法:
var LTLimit = (from a in dbavailability.tACLicenseTypes
where a.License_Type == "Long Term"
select a.Limit).ToList();
int limit = LTLimit[0];
可以在where()之后使用Sum()作为对象属性的值
像这样
bonus.Where(b=>b.Id==x.key&&b.RequiredScore.HasValue).Sum(b=>b.RequiredScore.Value)
50
是一个int
。我不明白你在问什么。你可以使用Convert、Int.Parse或Int.TryParse。我建议您尝试这三种方法,看看哪一种最适合您的情况。对不起,我的意思是上面查询的结果,我想乘以2,然后转换为字符串值。如果您向我们展示dbavailability.tACLicenseTypes
的类型,这将非常有帮助。特别是tACLicenseTypes.Limit的类型,这样我们就知道LTLimit的类型了。另外,不要在评论中说“对不起,我的意思是”,编辑你的问题以使你的意思更清楚,并添加一条评论,说“谢谢,我已经更新并澄清了我的问题”。如果结果中没有整数,那该怎么办?当然会有错误,但是您可以添加一个IF语句来检查列表中是否有超过0项对不起,我的意思是上面查询的结果,我想乘以2,然后转换为字符串value@Hobas我已经更新了我的答案把你的查询结果转换成int乘以2,然后将结果转换回字符串。由于LTLimit不会生成单个结果,因此不会编译此结果。它也需要首先执行。