如何获取linq查询结果到int

时间:2018-11-14 16:21:28

标签: c# linq

在查询下面返回单个值,例如50。我希望将其分配给int,以便可以对该值进行一些计算。我该怎么做

object AddressList: MutableLiveData<List<Address>>()
fun getAddressesLiveData(): LiveData<List<Address>> {
    GlobalScope.launch {
        withContext(Dispatchers.Main){ AddressList.value = getAddressList() }
    }
    return AddressList
}

4 个答案:

答案 0 :(得分:1)

我不清楚您要问的是什么,但是您的Linq查询返回的数据类型可能是 not 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 ));
}

编辑;

更正代码以从列表中获取第一项。

答案 1 :(得分:0)

查询的返回类型是什么? 如果返回的类型是其他基本数据类型(例如字符串),则可以尝试使用:

将其转换为整数
var i = Convert.ToInt32(LTLimit);

或使用:

int.TryParse(LTLimit, out var i);

但是,首先将数据存储在正确的类型中会更好。

答案 2 :(得分:0)

以下代码是检索查询中返回的第一个整数的一种方法:

var LTLimit = (from a in dbavailability.tACLicenseTypes
              where a.License_Type == "Long Term"
              select a.Limit).ToList();

int limit = LTLimit[0];

答案 3 :(得分:0)

您可以在where()之后使用Sum()作为对象属性的值

bonus.Where(b => b.Id == x.key && b.RequiredScore.HasValue).Sum(b => b.RequiredScore.Value);