Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq to对象,如何获得不同日期对象中字段的总数?_C#_Linq To Objects - Fatal编程技术网

C# 使用Linq to对象,如何获得不同日期对象中字段的总数?

C# 使用Linq to对象,如何获得不同日期对象中字段的总数?,c#,linq-to-objects,C#,Linq To Objects,我一直在寻找问题的解决方案,但找不到我真正需要的,因此我决定提出以下问题: 我有一个包含对象的列表。这些对象是基于文件中的数据创建的。该文件将包含大约30份报告。根据报告名称,如果是“report-201”,我将在列表中有28个对象,其中只有2个具有所需日期: '4/26/2018 12:00:00 AM' '4/27/2018 12:00:00 AM' 日期为'1/1/0001 12:00:00 AM'的其他26个对象,我不需要 如何创建另一个列表,该列表将包含具有所需日期总计的对象。 我想

我一直在寻找问题的解决方案,但找不到我真正需要的,因此我决定提出以下问题:

我有一个包含对象的列表。这些对象是基于文件中的数据创建的。该文件将包含大约30份报告。根据报告名称,如果是“report-201”,我将在列表中有28个对象,其中只有2个具有所需日期:

'4/26/2018 12:00:00 AM'
'4/27/2018 12:00:00 AM'
日期为
'1/1/0001 12:00:00 AM'
的其他26个对象,我不需要

如何创建另一个列表,该列表将包含具有所需日期总计的对象。 我想,我需要以某种方式创建一个逻辑来按日期对对象进行分组,汇总所有字段,并将每个对象添加到另一个列表中

我使用以下逻辑创建了包含28个对象的初步列表:

for(int lineCnt = 1; lineCnt <. fileLines.Count(); lineCnt++)
{
    if (fileLines[lineCnt].Contains("REPORT-201"))
    {
        report201 = new Report201();
        report201= CreateReport201Data(lineCnt, fileLines);
        listReports201.Add(report201);
        lineCnt++;
    }
}
但这只提供了具有上次报告日期的对象的数据。但是,我需要一个列表,其中包含的日期与文件中的日期一样多,并且包含每个对象中字段的总数

现在,我正在尝试创建一个列表,该列表将只包含具有特定日期的对象以及这些日期的总计:

var report201FinalList = (from report201Objects in listReports201
            group report201Objects by new { report201Objects.ReportDate } into grouping
            orderby grouping.Key.ReportDate
            select new Report201
            {
                 ReportDate = grouping.Key.ReportDate,
                 PurchaseDec = ?
                 QuasiCashDec = ?
                 ...etc... 
            }).ToList();
我如何总结对象中的字段并将这些对象添加到另一个列表中,或者是否有其他方法来处理我需要的内容

 var report201FinalList = (from report201Objects in listReports201
        group report201Objects by  report201Objects.ReportDate into grouping
        orderby grouping.Key
        select new Report201
        {
             ReportDate = grouping.Key,
             PurchaseDec = grouping.Sum(g => g.PurchaseDesc),
             QuasiCashDec = grouping.Sum(g => g.QuasiCashDec ),
             RepId = string.Join(",", grouping.Select(g => g.RepId)),
             ...etc... 
        }).ToList();
在这个查询中,
分组
是一个
i分组
,一个带有键属性的IEnumerable


在这个查询中,
分组
是一个
i分组
,一个带有键属性的IEnumerable。

您的初始linq似乎是正确的

错误出现在第一个代码段,第二个
lineCnt++错误并跳过一行。删除它并使用您编写的第一个linq
lineCnt=1
也可能是错误的,因为Henk首先注意到了这一点

for(int lineCnt = 0; lineCnt < fileLines.Count(); lineCnt++)
{
    if (fileLines[lineCnt].Contains("REPORT-201"))
    {
        report201 = new Report201();
        report201= CreateReport201Data(lineCnt, fileLines);
        listReports201.Add(report201);
        //lineCnt++;
    }
}
for(int-lineCnt=0;lineCnt
您的初始linq似乎正确

错误出现在第一个代码段,第二个
lineCnt++错误并跳过一行。删除它并使用您编写的第一个linq
lineCnt=1
也可能是错误的,因为Henk首先注意到了这一点

for(int lineCnt = 0; lineCnt < fileLines.Count(); lineCnt++)
{
    if (fileLines[lineCnt].Contains("REPORT-201"))
    {
        report201 = new Report201();
        report201= CreateReport201Data(lineCnt, fileLines);
        listReports201.Add(report201);
        //lineCnt++;
    }
}
for(int-lineCnt=0;lineCnt
发布CreateReport201Data创建的类。我们甚至无法判断ReportDate是字符串还是DateTime等。发布CreateReport201Data创建的类。我们甚至不知道ReportDate是字符串还是DateTime,等等。是的,很好。还值得补充的是,它应该是
lineCnt=1;是的,接球不错。还值得补充的是,它应该是
lineCnt=1;谢谢你的提示。但是我如何以同样的方式处理字符串值呢?示例:
RepID=grouping。选择(g=>g.RepID)
,因为每个对象可能具有不同的RepID值。这个例子不起作用,但想法保持不变,不清楚你想要什么。分组可以/应该包含多个不同的repid。请参阅我关于发布课程的评论。至少作为大纲图。我的意思是,每个对象都有ID,我正在尝试使用分组来获取每个对象的RepID。我需要将RepID分配给分组逻辑创建的新对象:`RepID=grouping.Select(id=>id.RepID)`您还没有阐明1-N关系。我不确定您所说的阐明是什么意思。
report201
列表中的每个对象都有一个名为RepID的字段。它不是一个数字,因此在分组时使用
和将不起作用。在添加到新列表时,我需要将每个对象中的字段指定给RepID谢谢你的提示。但是我如何以同样的方式处理字符串值呢?示例:
RepID=grouping。选择(g=>g.RepID)
,因为每个对象可能具有不同的RepID值。这个例子不起作用,但想法保持不变,不清楚你想要什么。分组可以/应该包含多个不同的repid。请参阅我关于发布课程的评论。至少作为大纲图。我的意思是,每个对象都有ID,我正在尝试使用分组来获取每个对象的RepID。我需要将RepID分配给分组逻辑创建的新对象:`RepID=grouping.Select(id=>id.RepID)`您还没有阐明1-N关系。我不确定您所说的阐明是什么意思。
report201
列表中的每个对象都有一个名为RepID的字段。它不是一个数字,因此在分组时使用
和将不起作用。添加到新列表时,我需要将每个对象中的该字段指定给RepID