我不擅长 LINQ,但是当我尝试编写 linq 查询时,会出现错误。
void Main()
{
var csvlines = File.ReadAllLines(@"c:test.csv");
var csvLinesData = csvlines.Skip(1).Select(l => l.Split(',').ToArray());
var users = csvLinesData.Select(data => new User
{
CSRName = data[12],
Incomming = csvLinesData.Count(w => w.direction='I'),
outgoing = csvLinesData.Count(w => w.direction='O')
}).ToList();
users.Dump();
}
class User
{
public string CSRName;
public string CallStart;
public string CallDuration;
public string RingDuration;
public string Direction;
public string IsInternal;
public string Continuation;
public string ParkTime;
public string Incomming;
}
这两行导致错误
Incomming = csvLinesData.Count(w => w.direction='I'),
outgoing = csvLinesData.Count(w => w.direction='O')
我正在尝试读取包含许多数据的CSV文件。 我只是喜欢从CSV文件读取后显示数据
我的数据应如下所示
CSR Name Incomming OutGoing
--------- --------- ----------
Wills 5 9
Wills 21 74
Wills 44 45
Wills 54 2
Wills 15 20
如果我需要绘制上面的输出,那么应该是正确的 LINQ 查询。 寻求帮助。 谢谢
编辑 1
我更改代码位如下
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;
}
但仍然收到错误和错误 msg 是 无法隐式将类型"int"转换为"字符串"
我哪里犯了错误? 请指正。 谢谢
这一行:
var csvLinesData = csvlines.Skip(1).Select(l => l.Split(',').ToArray());
产生IEnumerble<string[]>
。选择它时,您可以访问 CSV 的列,如以下行所示:
CSRName = data[12],
此行的问题:
csvLinesData.Count(w => w.direction='I')
是 csvLinesData
的元素是没有direction
字段或属性的string[]
。
无论如何,使用特定属性计算所有行看起来很奇怪,因为它会导致每个"用户"的数字相同。
因为我不知道你到底想做什么(我什至猜不到),我无法告诉你该做什么。
根据问题中的新部分进行编辑:
不能为字符串赋值整数:
Incomming = csvLinesData.Count(w => w[4] == "I"),
将属性Incomming
更改为整数或从数字创建一个字符串(这可能不是您需要的):
Incomming = csvLinesData.Count(w => w[4] == "I").ToString(),
顺便说一句,它仍然无法工作,因为您计算了第 5 列== "I"
的所有行,这导致每个用户的数字相同。您的示例在每行中都有不同的数字(但用户名相同)。这是非常令人困惑的。你真的必须考虑你真正想做什么,要么清楚地解释它,要么提供一些示例数据。