No se puede producir un gráfico usando linq en csharp
Estoy codificando en Microsoft Visual Studio 12 en ASP.net usando c # y noob en eso.
Así es como se ve el archivo csv
ID, Engine Type, Car
111,vtec, 1
131,vtec, 1
157,boxer,1
148,boxer,1
167,vtec,1
158,,0
107,,0
ID debe ser un autonumérico genérico, el tipo de motor debe ser una cadena de tipo y no sé qué coche debería porque está formado por 1 y 0 que representan a Boolean. Esto significa que 1 cliente tiene un automóvil y 0 significa que el cliente no tiene un automóvil.
Así es como creo una lista de ella.
var testingobject = (
from line in File.ReadAllLines("testing.csv").Skip(0)
let parts = line.Split(',')
select new
{
ID = parts[0],
Engine_Type = parts[1],
Car = parts[2] //should i put int32.parse(parts[2]) here
).ToList();
Creo una matriz simple que consta de ID, Tipo de motor, Coche, y la convierte a una lista usandoToList()
y luego enlazarlo a una lista desplegable, usando este código:
string[] testingddl = new string[] { "ID", "Engine Type", "Car" };
List<String> mytestinglist = testingddl.ToList();
var mytestin = from m in mytestinglist
select m;
DropDownList1.DataSource = mytestin.AsEnumerable();
DropDownList1.DataTextField = "";
DropDownList1.DataValueField = "";
DropDownList1.DataBind();
El usuario selecciona Car y debería darme un gráfico que tenga el tipo de motor en el eje x y el total en el eje y.
El problema: La columna consta de 1 y 0, lo que significa que el cliente tiene un automóvil (1) o no (0).
Me gustaría ver cuántos usuarios tienen diferentes tipos de tipos de motores y enlazarlos a, digamos un gráfico de columnas. Por lo tanto, los datos deben mostrarse en el eje x, el tipo de motor y el eje y deben tener el total. Según los datos, hay 3 vtecs y 2 boxeadores. Entonces vtecs representa una columna con 3 en total y boxers con 2.
Yo uso esta consulta linq y el siguiente código de enlace de gráfico.
if (tempval == "Car")// this is the current selected dropdown list value
{
var myfavitems = testingobject.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.Series[1].Points.AddXY(t.Key.ToString(), t.Count().ToString()).ToString();
Chart1.DataSource = myfavitems.AsEnumerable();
Chart1.Series[1].XValueMember = "Group Equipment Type";
Chart1.Series[1].YValueMembers = "Software";
Chart1.DataBind();
// ...??
El error se produce en el punto en el que estoy leyendo mis columnas de los archivos csv. El error diceFormat exception was unhandled by user code: Input string was not in a correct format
select new
{
ID = parts[0],
Engine_Type = parts[1],
Car = Int32.Parse(parts[2])
}
No sé qué está mal con esa declaración. Podría alguien ayudarme.