相关疑难解决方法(0)

在关闭警告中访问foreach变量

我收到以下警告:

在关闭时访问foreach变量.使用不同版本的编译器编译时可能会有不同的行为.

这就是我的编辑器中的样子:

悬停弹出窗口中的上述错误消息

我知道怎么修这个警告,但我想知道为什么我会收到这个警告?

这是关于"CLR"版本的吗?它与"IL"有关吗?

.net c#

85
推荐指数
3
解决办法
3万
查看次数

表达树为假人?

在这种情况下我是假的.

我试图在谷歌上读到这些是什么,但我只是不明白.有人可以给我一个简单的解释,说明它们是什么以及为什么它们有用?

编辑:我在谈论.Net中的LINQ功能.

.net c# linq expression-trees

72
推荐指数
7
解决办法
2万
查看次数

LINQ to SQL和有序结果的运行总计

我想在a中显示客户的会计历史记录DataGridView,我希望有一个列显示其余额的运行总计.我这样做的旧方法是获取数据,循环数据,逐行添加行DataGridView并计算当时的运行总数.瘸.我宁愿使用LINQ to SQL,或LINQ如果不能使用LINQ to SQL,来计算运行总数,这样我就可以设置DataGridView.DataSource为我的数据.

这是我正在拍摄的一个超级简化的例子.说我有以下课程.

class Item
{
    public DateTime Date { get; set; }
    public decimal Amount { get; set; }
    public decimal RunningTotal { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想要一个可以生成如下结果的L2S或LINQ语句:

   Date       Amount  RunningTotal
12-01-2009      5          5
12-02-2009     -5          0
12-02-2009     10         10
12-03-2009      5         15
12-04-2009    -15          0
Run Code Online (Sandbox Code Playgroud)

请注意,可能有多个具有相同日期的项目(12-02-2009).在计算运行总计之前,应按日期对结果进行排序.我猜这意味着我需要两个语句,一个用于获取数据并对其进行排序,另一个用于执行运行总计算.

我希望Aggregate能做到这一点,但它并不像我希望的那样有效.或者也许我只是想不出来.

这个问题似乎跟我想要的一样,但我不知道接受/唯一的答案是如何解决我的问题的.

关于如何解决这个问题的任何想法?

编辑 结合Alex和DOK的答案,这就是我最终得到的结果:

decimal runningTotal = 0;
var results = FetchDataFromDatabase()
    .OrderBy(item => item.Date)
    .Select(item => new …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-objects linq-to-sql

35
推荐指数
3
解决办法
1万
查看次数

C#范例:对列表的副作用

我试图进一步了解副作用以及如何控制和应用它们.

在下面的航班列表中,我想设置满足条件的每个航班的属性:

IEnumerable<FlightResults> fResults = getResultsFromProvider();

//Set all non-stop flights description
fResults.Where(flight => flight.NonStop)
        .Select(flight => flight.Description = "Fly Direct!");
Run Code Online (Sandbox Code Playgroud)

在这个表达式中,我对我的列表有副作用.从我有限的知识,我知道前."LINQ仅用于查询 "和"列表中只有少数操作,分配或设置值不是其中之一"和"列表应该是不可变的".

  • 上面的LINQ语句有什么问题,应该如何更改?
  • 我在哪里可以获得有关上述场景的基本范例的更多信息?

c# linq paradigms list side-effects

12
推荐指数
3
解决办法
3032
查看次数