我使用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)
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作为选择的下拉列表。
然后在用户点击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()。
如何绑定它?
答案 0 :(得分:0)
我解决这个问题的方式,对于那些仍然想知道我是怎么做的人是: 由于group by语句产生了一个区分vtec和拳击手的Key。我使用了这种区别并将我的列表作为数据网格的数据源发布。
GridView1.DataSource = myfavitems;
GridView1.DataBind();
现在,表格只会根据您的列表中的项目“myfavitems”列表显示该组。既然排除了csv文件中的所有剩余值,并且只能看到已经被Groupby子句过滤的值,那么将数据网格绑定到图表变得很容易。
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子句的变量。
我也禁用了数据网格,因此我没有数据的可视化。 希望这可以帮助!!