c# - 使用 LINQ to SQL 计算运行总计

标签 c# linq-to-sql

我有一个 WPF C# 应用程序,它通过 SQL-LINQ 连接访问数据并将其放在数据网格上。我添加了“运行点数”列,并一直在尝试找出如何正确填充此列。我通过搜索网络找到了几种方法,但这些方法都不适合我的特定设置。大多数时候我都会陷入无限循环。我希望运行点数列是累积的,并且计算顺序从最早的“关闭时间”开始。

Close Time   Profit    Running Profit
 10.09.11     $10          $10 
 10.10.11     $20          $30 
 10.11.11     $15          $45 

这里是代码摘要。我希望有人可以建议如何修复此代码,并提供帮助我实现此功能所需的任何相关信息:

public void RefreshClose() {
    if (CloseTradeCollection == null) return;
    var i = 0;

    if (StaticTool.SelectedAccount == null) {
        ExistCloseTrade = false;
        CloseTradeCollection.Clear();
        return;
    }

    Account = StaticTool.SelectedAccount;

    foreach (var trade in GetClosedTradesFromDb()) {
        if (CloseTradeCollection.Count <= i) {
            ExistCloseTrade = true;
            var tradeDetails = new Trade {
                Id = trade.id,
                Ticket = trade.ticket,
                OpenTime = trade.opentime,
                CloseTime = trade.closetime,
                Symbol = trade.symbol,
                OpenPrice = trade.openprice,
                ClosePrice = trade.closeprice,
                Profit = trade.profit,
                Comment = trade.comment.Trim(),
            };

            tradeDetails.History = tradeDetails.CloseTime - tradeDetails.OpenTime;
            CloseTradeCollection.Add(tradeDetails);
        }

        else {
            var tradeDetails = CloseTradeCollection[i];
            tradeDetails.Id = trade.id;
            tradeDetails.Ticket = trade.ticket;
            tradeDetails.OpenTime = trade.opentime;
            tradeDetails.CloseTime = trade.closetime;
            tradeDetails.Symbol = trade.symbol;
            tradeDetails.OpenPrice = trade.openprice;
            tradeDetails.ClosePrice = trade.closeprice;
            tradeDetails.Profit = trade.profit;
            tradeDetails.Comment = trade.comment.Trim();
            tradeDetails.History = DateTime.Now - tradeDetails.OpenTime;

            //tradeDetails.RunningProfit = ????????

        }

        i++;
    }
}

最佳答案

您可以创建一个局部变量来跟踪运行利润,利用赋值操作返回所分配的值这一事实。

tradeDetails.RunningProfit = (runningProfit = runningProfit + trade.profit);

关于c# - 使用 LINQ to SQL 计算运行总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7784377/

相关文章:

c# - 在 LINQ 中过滤冗余数据

c# - 不允许在查询中显式构造实体类型 [MyClass]

.net - 在 sql 查询中传递整数列表,最佳实践

c# - 对 UuidCreateSequential 生成的顺序 Guid 进行排序

java - 如何覆盖通用存储库错误消息

c# - 如何对需要特定文件的类进行单元测试

c# - linq to sql - 我如何重写以下内容

asp.net - LINQ to SQL Web 应用程序最佳实践

c# - 如果 C# 指针被认为是 "unsafe,",这是否意味着 C++ 指针也是 "unsafe"?

c# - 将此 20110811T131446+0200 转换为 C# dateTime 对象