如何在LINQ中比较两个匿名变量列表

slizorn

链接到csv文件

我有以下代码可过滤csv文件,并将第1列和第5列存储在一个列表(值)中,并将第7列和第11列存储在另一列表(值1)中。

目的是搜索第一个列表中的每个元素(值),然后在添加所有匹配案例的支出之前检查第二个列表中的每个元素(值1)的匹配期间,然后将其与第一个列表的支出进行比较(误差为1%)保证金。

以下代码使用下面的两个foreach循环来处理每个列表部分的搜索。但是我在定义变量时遇到问题(即var temp无法正常工作,并给我一个FormatException错误:输入字符串的格式不正确。”在运行代码时出错),以便将付款存储或添加到一起如果第二个列表中出现多个句点,则表示该事件。

当我定义列表时,是否还可以定义变量支付和期间的类型?问题在于,它们是应该定义的匿名变量。

任何帮助表示赞赏,谢谢。

var values = File.ReadLines(path).Skip(1)
      .Select(x => x.Split(','))
      .Where(x => x[0] != string.Empty)
      .Select(x => new { Period = int.Parse(x[0]), Payout = decimal.Parse(x[4]) })
      .ToList();

values = values.OrderBy(x => x.Period)
.ToList();

var values1 = File.ReadLines(path).Skip(1)
      .Select(x => x.Split(','))
      .Where(x => x[0] == string.Empty)
      .Select(x => new { Period = int.Parse(x[6]), Payout = decimal.Parse(x[10]) })
      .ToList();
//Console.WriteLine(values1);

values1 = values1.OrderBy(x => x.Period)
.ToList();
//Console.WriteLine(values1[0]);

decimal temp = 0;

foreach (var value in values)
{
    foreach (var value1 in values1)
    {
        if (value.Period == value1.Period)
        {
            temp += value1.Payout;
        }
    }
}
sgmoore

FormatException意味着您的某些数据不是您期望的。

您可以使用如下所示的方法来检查无效数据。

   int dummyPeriod ;
   decimal dummyPayout;

   var badValues = File.ReadLines(path).Skip(1)
     .Select(x => x.Split(','))
     .Where(x => !Int32.TryParse(x[0], out dummyPeriod) || 
              !Decimal.TryParse(x[4], out dummyPayout))

     .Select(x => new { Period =  x[0] , Payout = x[4]   })
     .ToList();

如果您只想忽略这些行,可以反转选择,例如

var values = File.ReadLines(path).Skip(1)
  .Select(x => x.Split(','))
  .Where(x => Int32.TryParse(x[0], out dummyPeriod) && 
              Decimal.TryParse(x[4], out dummyPayout))    
  .Select(x => new { Period = int.Parse(x[0]), Payout = decimal.Parse(x[4]) })
  .ToList();

注意

 decimal.parse(x[4]) 

如果x [4]为空字符串,将失败,而您可能希望将其解释为零。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在php中比较两个变量

来自分类Dev

如何在Clojure中比较/减去两个列表

来自分类Dev

如何在JUnit中比较两个double列表

来自分类Dev

如何在python中比较两个列表

来自分类Dev

如何在C#中比较两个列表?

来自分类Dev

如何在Python中比较两个以上的列表?

来自分类Dev

如何在javascript中比较两个列表项?

来自分类Dev

如何在linq中比较两个不区分大小写的复杂对象

来自分类Dev

如何在C#中比较两个对象列表?

来自分类Dev

如何在Dart中比较两个相等且包含相同对象的列表?

来自分类Dev

如何在tcl中比较两个列表(包含字符和数字)?

来自分类Dev

如何在Matlab中比较两个未排序的列表?

来自分类Dev

如何在Python中比较两个列表并计算所有匹配项?

来自分类Dev

如何在flutter中比较两个列表数据(飞镖)

来自分类Dev

如何在Python中比较两个列表中的值?

来自分类Dev

如何在tcl中比较两个列表(包含字符和数字)?

来自分类Dev

如何在露天javascript中比较两个noderefs

来自分类Dev

如何在python中比较两个时间字段

来自分类Dev

如何在Java中比较两个图像

来自分类Dev

如何在python中比较两个时区?

来自分类Dev

如何在Postgresql中比较两个表?

来自分类Dev

如何在android中比较两个edittext字段

来自分类Dev

如何在Windows中比较两个csv文件

来自分类Dev

如何在Java中比较两个哈希映射

来自分类Dev

如何在JavaScript中比较两个日期时间?

来自分类Dev

如何在querybuilder中比较两个日期

来自分类Dev

如何在golang中比较两个文件?

来自分类Dev

如何在shell中比较两个值?

来自分类Dev

如何在Java中比较两个arraylist <Contacts>

Related 相关文章

热门标签

归档