添加额外子句会导致输出错误

时间:2015-06-17 19:54:31

标签: c# linq

当我刚刚添加此子句&& w[12]==CSRName时,现在所有传入和传出数据都变为零。代码有什么问题?

void Main()
{
    var csvlines = File.ReadAllLines(@"c:\smdr.csv");
    var csvLinesData = csvlines.Skip(1).Select(l => l.Split(',').ToArray());
    var csrName = "";
    var users = csvLinesData.Select(data => new User
    {
        CSRName = data[12],
        Incomming = csvLinesData.Count(w => w[4] == "I" 
                                         && w[8] == "0"
                                         && w[10] == "0"
                                         && w[12] == csrName
                                         && w[1].ToString().Substring(w[1].ToString().Length-8)!="00:00:00"),

        outgoing = csvLinesData.Count(w => w[4] == "O"
                                        && w[8] == "0"
                                        && w[10] == "0"
                                        && w[12] == csrName
                                        && w[1].ToString().Substring(w[1].ToString().Length-8)!="00:00:00"),

    })
    .Where(u => !u.CSRName.Contains("VM") && u.CSRName != "Voice Mail")
    .OrderBy(u => u.CSRName)
    .ToList();

    users.Dump();
}

class User
{
    public string CSRName;
    public int outgoing;
    public int Incomming;
}

修改

按照指导我编辑代码,现在数据即将传入和传出。这些以下我编辑的行

   Incomming = csvLinesData.Count(w => w[4] == "I" 
                                    &&  w[8] == "0"
                                    &&  w[10] == "0" && w[12]==data[12]
                                    &&  w[1].ToString().Substring(w[1].ToString().Length-8)!="00:00:00"),

    outgoing = csvLinesData.Count(w => w[4] == "O"
                                    && w[8] == "0"
                                    && w[10] == "0" && w[12]==data[12]
                                    &&  w[1].ToString().Substring(w[1].ToString().Length-8)!="00:00:00"),

1 个答案:

答案 0 :(得分:1)

csrName始终为"",因为这是您分配给它的内容。如果你的意思是CSRName(新User对象的属性),你需要使用data[12],因为你无法访问新对象(理论上你可以重写你的逻辑,所以你可以,但可能更容易复制data[12]值。