【发布时间】:2015-06-16 14:51:26
【问题描述】:
这里我想知道我的 csv 文件是如何包含数据的
Call start Call duration Ring duration Direction Is_Internal Continuation Party1Name
---------- ------------- ------------- --------- ----------- ------------ -----------
09-06-15 7:27 0:00:06 0 I 1 1 ACC
09-06-15 7:27 0:00:06 0 I 0 1 ACC
09-06-15 11:27 0:00:06 0 ) 0 1 Sales
09-06-15 7:27 0:00:06 0 I 0 1 ACC
09-06-15 7:27 0:00:06 0 I 1 0 Suzzy
09-06-15 03:27 0:00:06 0 I 0 1 Suzzy
09-06-15 7:27 0:00:06 0 I 0 1 ACC
09-06-15 7:27 0:00:06 0 O 0 0 Sales
09-06-15 7:27 0:00:06 0 I 1 1 ACC
09-06-15 12:27 0:00:06 0 I 0 1 Matt
09-06-15 10:27 0:00:06 0 I 0 1 VM Channel
09-06-15 7:27 0:00:06 0 ) 0 0 VM Channel
09-06-15 7:27 0:00:06 0 I 0 1 Voice Mail
现在我想显示如下所示的员工明智数据
CSR Name Incomming outgoing call transfer
-------- ---------- -------- -------------
ACC 10 12 11
SALES 05 06 02
Suzy 7 5 5
Matt 2 2 2
我的情况是
1) 传入方向必须为 I,传出方向为 O
2) 员工姓名虚拟机频道和语音邮件将不予考虑
还有更多
我不擅长 linq,这就是为什么发布这个问题寻求帮助的原因。我有 linq 查询示例,它有点相似,但仍然不知道要纠正什么或添加什么以获得我想要的输出。
这里是 linq 代码
void Main()
{
var csvlines = File.ReadAllLines(@"M:\smdr(backup08-06-2015).csv");
var csvLinesData = csvlines.Skip(1).Select(l => l.Split(',').ToArray());
//int iDir = csvLinesData.Count(w => w.direction='I');
var users = csvLinesData.Select(data => new User
{
CSRName = data[12],
Incomming = csvLinesData.Count(w => w[4] == "I"),
outgoing = csvLinesData.Count(w => w[4] == "O")
}).ToList();
users.Dump();
}
class User
{
public string CSRName;
public int outgoing;
public int Incomming;
public int calltransfer;
}
如何从结果中删除员工姓名 VM 频道和语音邮件。在 sql 中我们可以使用 not like 和 not in 子句,但是在 linq 中有哪些类似的东西可用?
如何获取员工姓名数据
CSRName = data[12],
Incomming = csvLinesData.Count(w => w[4] == "I")
如果这一行CSRName = data[12] return suzy 那么 suzy 相关的传入数据将存储在Incomming 变量中。如何实现。
只是想知道是否有人可以帮助进行 linq 查询。
【问题讨论】:
-
您的问题归结为“如何使用 LINQ 进行过滤?”。到目前为止,您尝试过什么?
-
这可能会对您有所帮助:LINQ to CSV library.
-
我想用 LINQ 实现它............请不要第三方。