首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# LINQ 分組求和類型轉換:Sales 字段為字符串需 Convert.ToInt32

     編輯:程式設計綜合問答

問題代碼


var queryResults = from c in customers
                   group c by c.Region into cg
                   select new { totalSales = cg.Sum(c => c.Sales), Region = cg.Key };
// 報錯:Sales 是 string,無法直接 Sum

修復


var queryResults = from c in customers
                   group c by c.Region into cg
                   select new { totalSales = cg.Sum(c => Convert.ToInt32(c.Sales)), Region = cg.Key };

原因

  • 實體類 Sales 屬性定義為 string(如 new Customer { Sales = "2002" })。
  • LINQ Sum 需要數值類型,字符串需顯式轉換。
  • Convert.ToInt32 安全處理 null/空字符串(返回 0),優於 int.Parse。

最佳實踐

  1. 實體層面修正:Sales 應定義為 int/decimal,數據庫層面也用數值類型,避免查詢時反復轉換。
  2. 投影時轉換:select new { Sales = int.Parse(c.Sales), ... } 後續直接用強類型。
  3. 空值防護:c => string.IsNullOrEmpty(c.Sales) ? 0 : Convert.ToInt32(c.Sales)。

**字符串存數值是反模式,源頭修正類型才是正道。**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved