我是linq的新手,这会不断在空卷字段中弹出。该文件是不可预测的,它将发生,因此我想在出现异常的地方添加0。有任何快速简便的方法吗?

     var qry =
            from line in File.ReadAllLines("C:\\temp\\T.txt")
            let myRecX = line.Split(',')
            select new myRec()

            {

               price =   Convert.ToDecimal( myRecX[0].Replace("price =  ", "")) ,
               volume = Convert.ToInt32(myRecX[1].Replace("volume =", "")),
                dTime = Convert.ToDateTime( myRecX[2].Replace("timestamp =", ""))

            };

最佳答案

如果要在传入数据为null,为空或完全由空格字符组成时使用默认值,则可以这样操作:

volume = string.IsNullOrWhitesplace(myRecX[1])
       ? defaultVolume // <<== You can use any constant here
       : Convert.ToInt32(myRecX[1].Replace("volume =", ""))


但是,这是一种实现您所需要的“快速而肮脏的”方法,因为每个命名参数的位置都保持硬编码。一种更可靠的方法是编写一个微型分析器,该分析器注意文件中指定的属性名称,而不是用空字符串替换它们。

10-04 22:21