C# 使用csv文件绑定图表会产生错误
我正在使用C#在Visual Studio 12 ASP.net中编写代码。我的csv中有这样的数据C# 使用csv文件绑定图表会产生错误,c#,linq,csv,data-binding,charts,C#,Linq,Csv,Data Binding,Charts,我正在使用C#在Visual Studio 12 ASP.net中编写代码。我的csv中有这样的数据 ID, Engine Type, Car, 111,vtec, 1, 131,vtec, 1, 157,boxer,1, 148,boxer,1, 167,vtec,1, 158,,0, 107,,0, 我这样做是为了把它列入一个清单 var testingobject = from line in File.ReadAllLines("testingparttwo.csv").Skip(1)
ID, Engine Type, Car,
111,vtec, 1,
131,vtec, 1,
157,boxer,1,
148,boxer,1,
167,vtec,1,
158,,0,
107,,0,
我这样做是为了把它列入一个清单
var testingobject = from line in File.ReadAllLines("testingparttwo.csv").Skip(1)
let parts = line.Split(',')
select new CarClass()
{
Id = Int32.Parse(parts[0]),
Engine_Type = parts[1],
Car = Int32.Parse(parts[2])
};
var mynewlist = testingobject.ToList();
然后,我绑定了一个下拉列表,其中包含ID、引擎类型和汽车作为选择,只使用我手动创建的列表
然后,在用户单击Car之后,我想将适当的数据绑定到图表(列或饼图,只要我看到一个可视化的图标就行)。1和0表示客户是否有车(1)或没有车(0)。我想看看有多少不同类型的发动机类型,并得到一个视觉上。根据数据,有3名VTEC和2名拳击手
这是我选择后的下拉列表更改代码为:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
string tempy = DropDownList1.Text;
var testingobject = from line in File.ReadAllLines("testingparttwo.csv").Skip(1)
let parts = line.Split(',')
select new CarClass()
{
Id = Int32.Parse(parts[0]),
Engine_Type = parts[1],
Car = Int32.Parse(parts[2])
};
var myseconedlist = testingobject.ToList();
if (tempy == "Car")
{
var myfavitems = myseconedlist.Where(a => a.Car == 1).ToList();
foreach (var t in myfavitems.GroupBy(a => a.Engine_Type))
{
Series Series1 = new Series();
Chart1.Series.Add(Series1);
Chart1.DataSource = myfavitems.AsEnumerable();
Chart1.Series[0].Points.ADDXY(t.key,t.count()); //this doesnt work!!
Chart1.Series[0].XValueMember = "Engine Type";
Chart1.Series[0].YValueMembers = "Car";
Chart1.DataBind();
因此,每当我绑定它时,它总是产生一个关于t.key和t.count的错误。ADDXY需要双值,而不是t.key,t.count()
我如何绑定它?我解决这个问题的方式,对于那些仍然想知道我是如何做到的人: 因为GROUPBY语句生成一个区分VTEC和BOXER的键。我使用了这种区别,并将我的列表作为datagrid的数据源发布
GridView1.DataSource = myfavitems;
GridView1.DataBind();
现在,在我的例子“myfavitems”列表中,该表将仅按列表中的项目显示分组。现在,csv文件中的所有剩余值都已排除,并且您只能看到已通过Groupby子句过滤的值,因此将datagrid绑定到图表变得很容易
Series Series1 = new Series();
Chart1.Series.Add(Series1);
Chart1.Series[0].XValueMember = "Engine Type";
Chart1.Series[0].YValueMembers = "Car";
Chart1.DataSource = GridView1.DataSource;
Chart1.DataBind();
您可以在Chart1.Databind之后添加另一条语句,以区分正在使用的键
Chart1.Series[0].Points.AddXY("" + myword + "", t.Count());
Chart1.Series[0].PostBackValue = "#VALX, #VAL";
myword是一个存储以下内容的变量:
string myword = t.Key.AsEnumerable().ToString();
t是遍历myfavitems.groupby子句的变量
我还禁用了datagrid,因此无法查看数据。
希望这能有所帮助