LINQ 将字符串转换为整数
LINQ converting string to int
我有这个 linq 查询,它正在进行选择,然后尝试对总计求和,因此在每个组键下都有一个总计。该值是一个字符串,我无法对一个字符串求和。但是,当我尝试转换为 int 时出现错误:
LINQ to Entities 无法识别方法 'Int32 ToInt32(System.String)' 方法,并且无法将此方法转换为存储表达式。
var dataSet = entities.BL_MT_CATEGORY
.Distinct()
.Where(d => (iGeography.FirstOrDefault() == "" || iGeography.Contains(d.Geography))
&& (iRetailer.FirstOrDefault() == "" || iRetailer.Contains(d.Retailer))
&& (iCountry.FirstOrDefault() == "" || iCountry.Contains(d.Country))
&& (iAirport.FirstOrDefault() == "" || iAirport.Contains(d.Airport))
&& (iShop.FirstOrDefault() == "" || iShop.Contains(d.StoreName))
&& (iCategory.Contains(d.Category))
&& (d.Values == "Sum of EuroValue"))
.GroupBy(x => x.Category)
.Select(g => new {
C201408 = g.Sum(x => Convert.ToInt32(x.C201408))
})
.ToList();
尝试将转化移到查询之外。
var dataSet = entities.BL_FERRERO_MT_CATEGORY
.Distinct()
.Where(d => (iGeography.FirstOrDefault() == "" || iGeography.Contains(d.Geography))
&& (iRetailer.FirstOrDefault() == "" || iRetailer.Contains(d.Retailer))
&& (iCountry.FirstOrDefault() == "" || iCountry.Contains(d.Country))
&& (iAirport.FirstOrDefault() == "" || iAirport.Contains(d.Airport))
&& (iShop.FirstOrDefault() == "" || iShop.Contains(d.StoreName))
&& (iCategory.Contains(d.Category))
&& (d.Values == "Sum of EuroValue"))
.ToList()
.GroupBy(x => x.Category)
.Select(g => new {
C201408 = g.Sum(x => Convert.ToInt32(x.C201408))});
这是使 LINQ to Entities 转换有效查询。之后会进行.Sum()
.
的分组和选择
仅获取要求和的列并将其列为求和列表。
var dataSet = entities.BL_FERRERO_MT_CATEGORY
.Distinct()
.Where(d => (iGeography.FirstOrDefault() == "" || iGeography.Contains(d.Geography))
&& (iRetailer.FirstOrDefault() == "" || iRetailer.Contains(d.Retailer))
&& (iCountry.FirstOrDefault() == "" || iCountry.Contains(d.Country))
&& (iAirport.FirstOrDefault() == "" || iAirport.Contains(d.Airport))
&& (iShop.FirstOrDefault() == "" || iShop.Contains(d.StoreName))
&& (iCategory.Contains(d.Category))
&& (d.Values == "Sum of EuroValue"))
.Select(x=>x.C201408)
.ToList()
.Sum(x=>int.Parse(x));
我有这个 linq 查询,它正在进行选择,然后尝试对总计求和,因此在每个组键下都有一个总计。该值是一个字符串,我无法对一个字符串求和。但是,当我尝试转换为 int 时出现错误:
LINQ to Entities 无法识别方法 'Int32 ToInt32(System.String)' 方法,并且无法将此方法转换为存储表达式。
var dataSet = entities.BL_MT_CATEGORY
.Distinct()
.Where(d => (iGeography.FirstOrDefault() == "" || iGeography.Contains(d.Geography))
&& (iRetailer.FirstOrDefault() == "" || iRetailer.Contains(d.Retailer))
&& (iCountry.FirstOrDefault() == "" || iCountry.Contains(d.Country))
&& (iAirport.FirstOrDefault() == "" || iAirport.Contains(d.Airport))
&& (iShop.FirstOrDefault() == "" || iShop.Contains(d.StoreName))
&& (iCategory.Contains(d.Category))
&& (d.Values == "Sum of EuroValue"))
.GroupBy(x => x.Category)
.Select(g => new {
C201408 = g.Sum(x => Convert.ToInt32(x.C201408))
})
.ToList();
尝试将转化移到查询之外。
var dataSet = entities.BL_FERRERO_MT_CATEGORY
.Distinct()
.Where(d => (iGeography.FirstOrDefault() == "" || iGeography.Contains(d.Geography))
&& (iRetailer.FirstOrDefault() == "" || iRetailer.Contains(d.Retailer))
&& (iCountry.FirstOrDefault() == "" || iCountry.Contains(d.Country))
&& (iAirport.FirstOrDefault() == "" || iAirport.Contains(d.Airport))
&& (iShop.FirstOrDefault() == "" || iShop.Contains(d.StoreName))
&& (iCategory.Contains(d.Category))
&& (d.Values == "Sum of EuroValue"))
.ToList()
.GroupBy(x => x.Category)
.Select(g => new {
C201408 = g.Sum(x => Convert.ToInt32(x.C201408))});
这是使 LINQ to Entities 转换有效查询。之后会进行.Sum()
.
仅获取要求和的列并将其列为求和列表。
var dataSet = entities.BL_FERRERO_MT_CATEGORY
.Distinct()
.Where(d => (iGeography.FirstOrDefault() == "" || iGeography.Contains(d.Geography))
&& (iRetailer.FirstOrDefault() == "" || iRetailer.Contains(d.Retailer))
&& (iCountry.FirstOrDefault() == "" || iCountry.Contains(d.Country))
&& (iAirport.FirstOrDefault() == "" || iAirport.Contains(d.Airport))
&& (iShop.FirstOrDefault() == "" || iShop.Contains(d.StoreName))
&& (iCategory.Contains(d.Category))
&& (d.Values == "Sum of EuroValue"))
.Select(x=>x.C201408)
.ToList()
.Sum(x=>int.Parse(x));