优化 List<decimal> all_sum = new List<decimal>(); for (int i = 0; i < 10000; i++) { Random ran = new Random(); var rnum = ran.Next(0, (int)(100 * 100) - 1);//将0~100映射到0~10000,提高精度到小数点后2位;生成随机数rnum; //Console.WriteLine(rnum); all_sum.Add(rnum / 100m);//再换算为0~100范围 }
时间: 2024-02-06 09:03:26 浏览: 26
首先,你的代码中在每次循环中都用 `new Random()` 创建了一个新的 `Random` 实例,这会导致生成的随机数不够随机,建议将 `Random` 实例放到循环外面来。
其次,你可以考虑使用 `Random.NextDouble()` 方法来生成 [0, 1) 范围内的随机小数,然后再乘以 100 来得到 [0, 100) 范围内的随机小数。这样可以避免使用整数除法和类型转换,提高精度和性能。
最终的代码可以改写为:
```
List<decimal> all_sum = new List<decimal>();
Random ran = new Random();
for (int i = 0; i < 10000; i++)
{
var rnum = ran.NextDouble() * 100.0m;
all_sum.Add(rnum);
}
```
相关问题
优化 public List<DepartDto> TreeListCount(int year, int? month, List<DepartDto> AllList, int parentID = 0) { DepartDAL dal = new DepartDAL(); List<DepartDto> List = AllList.FindAll(a => a.ParentID == parentID); foreach (var parentItem in List) { parentItem.total = pareChilTotal(true).FirstOrDefault(a => a.DepartName == parentItem.DepartName)?.total ?? 0; //父级总人数 parentItem.procurementMoney = money(year, month, 2, true).FirstOrDefault(a => a.DepartName == parentItem.DepartName)?.procurementMoney ?? 0; //父级采购金额 parentItem.travelMoney = money(year, month, 3, true).FirstOrDefault(a => a.DepartName == parentItem.DepartName)?.travelMoney ?? 0; //父级出差金额 parentItem.children = TreeListCount(year, month, AllList, parentItem.DepartID); int? childTotal = 0; decimal? procurementMoney = 0; decimal? travelMoney = 0; foreach (var childItem in parentItem.children) { childItem.total = pareChilTotal(false).FirstOrDefault(a => a.DepartName == childItem.DepartName)?.total ?? 0;//子级部门人数 childItem.procurementMoney = money(year, month, 2, false).FirstOrDefault(a => a.DepartName == childItem.DepartName)?.procurementMoney ?? 0; //子级采购金额 childItem.travelMoney = money(year, month, 3, false).FirstOrDefault(a => a.DepartName == childItem.DepartName)?.travelMoney ?? 0; //子级出差金额 childTotal += childItem.total; procurementMoney += childItem.procurementMoney; travelMoney += childItem.travelMoney; } parentItem.total += childTotal; parentItem.procurementMoney += procurementMoney; parentItem.travelMoney += travelMoney; } return List; }
这段代码看起来是一个递归函数,用于构建一个部门树形结构并计算每个部门的总人数、采购金额和出差金额。不过这个函数中有一些可以优化的地方:
1. 在函数中多次调用 `pareChilTotal` 和 `money` 方法,这些方法可能会对数据库进行多次查询,造成性能瓶颈。可以将这些查询结果缓存起来,减少对数据库的访问次数。
2. 在每次循环中对 `AllList` 列表进行查找操作,这也会影响性能。可以将 `AllList` 列表转换为字典或哈希表,以便快速查找。
3. 对于每个部门对象,都会对其子部门进行递归操作,这可能会导致栈溢出。可以加入一些安全机制,比如限制递归深度。
4. 在对子部门进行循环计算时,可以使用 LINQ 语句来简化代码。比如使用 `Sum` 方法来计算子部门的总人数、采购金额和出差金额。
sql语句select sum(InventoryQty) from test_oolislis where ProductCode='999',用SqlSugar接收SQL查出的数据并且接收
### 回答1:
可以使用以下代码:
var sum = Db.Queryable<Test_OolisLis>()
.Where(t => t.ProductCode == "999")
.Select(t => t.InventoryQty)
.Sum();
其中,Test_OolisLis 是对应的实体类,Db 是 SqlSugar 的数据库操作对象。
### 回答2:
使用SqlSugar接收SQL查询的结果可以通过以下代码实现:
```csharp
using SqlSugar;
// 创建数据库连接对象
var db = new SqlSugarClient(new ConnectionConfig
{
ConnectionString = "数据库连接字符串",
DbType = DbType.SqlServer, // 数据库类型
IsAutoCloseConnection = true, // 自动关闭数据库连接
});
// 执行SQL查询并接收结果
var result = db.Ado.GetScalar<int>("select sum(InventoryQty) from test_oolislis where ProductCode='999'");
// 输出结果
Console.WriteLine($"查询结果:{result}");
```
在上述代码中,首先需要创建一个 `SqlSugarClient` 对象,需要提供数据库连接字符串和数据库类型等参数。然后使用该对象的 `Ado.GetScalar<T>` 方法执行查询语句, `T` 表示查询结果的数据类型,这里假设查询结果是一个整数类型。最后通过打印输出或其他方式使用查询结果。
### 回答3:
使用SqlSugar接收SQL查询结果可以通过以下步骤实现:
1. 首先,我们需要创建一个SqlSugar的实例对象,用于与数据库进行交互。可以使用如下代码创建SqlSugar实例:
```csharp
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "your_connection_string",
DbType = DbType.SqlServer, // 根据实际数据库类型选择相应的DbType
IsAutoCloseConnection = true, // 自动关闭数据库连接
InitKeyType = InitKeyType.Attribute, // 使用实体属性获取主键
});
```
2. 接下来,我们可以使用SqlSugar提供的`Sqlable`方法执行SQL查询。在查询语句中,我们可以使用`Select`方法选择需要查询的字段,然后使用`Where`方法添加查询条件。最后,使用`ToList`方法将查询结果转换为列表。如下所示:
```csharp
decimal totalInventoryQty = db.SqlQueryable<Test_oolislis>()
.Select(s => SqlFunc.AggregateSum(s.InventoryQty))
.Where(s => s.ProductCode == "999")
.ToList().First();
```
3. 最后,我们可以将查询得到的结果存储在需要的变量中。在上述代码中,将查询到的总库存数量存储在名为`totalInventoryQty`的变量中。
需要注意的是,在上述代码中,我们假设数据库中存在名为`Test_oolislis`的表对应的实体类。如果没有对应的实体类,可以使用匿名类或者`dynamic`类型来接收查询结果。
以上就是使用SqlSugar接收SQL查询结果的基本步骤。根据实际情况,可以做一些适当的调整。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)