ASP.Net IEnumerable List: almacenar valores en el gráfico

Tengo una matriz de mis valores x para mi gráfico y un Linq to Entity LIST que contiene mis valores y. ¿Cómo accedo a mi lista para agregar sus valores al gráfico? esto es lo que tengo hasta ahora:

                //Get restaurant name & count of votes for each restaurant
                BL.BLaddVote obj1 = new BLaddVote();
                var votesList = obj1.countVotes();

                //Set chart x & y values:  here is where I'm stuck
                chtVotes.Series[0].Points.Add(<X VALUES>, <Y VALUES>);

¿Cómo obtengo los valores de mi lista anónima en mi gráfico? Gracias por adelantado.

Además, aquí está la consulta para extraer los datos:

    public class NumVotesInfo
    {
        public string RestName { get; set; }
        public int NumVotes { get; set; }
    }

    public IEnumerable<NumVotesInfo> countVotes()
    {
        //Return the count of the number of reviews for a specific restaurant ID
        var NumVotes = from VOTE in db.VOTEs
                         group VOTE by VOTE.VOTE_VALUE into t
                         select new NumVotesInfo { RestName = t.Key, NumVotes = t.Count() };

        return NumVotes.ToList();
    }

preguntado el 27 de agosto de 11 a las 22:08

¿Cuál es el tipo que countVotes ¿devoluciones? -

1 Respuestas

Parece que desea fusionar la lista de valores X y la lista de valores Y:

var pointList = myXValues.Zip(votesList, (a,b) => new { X = a, Y = b.NumVotes });

Ahora tu tienes X y Y propiedades en tu pointList y puede usarlo para graficar:

foreach(var point in pointList)
    chtVotes.Series[0].Points.Add(point.X, point.Y);

Alternativamente, suponiendo que ambas listas tengan la misma longitud, puede usar el índice. Esto requeriría countVotes() para devolver una lista no un IEnumerable, puede crear la lista usando ToList():

var votesList = obj1.countVotes().ToList();

Ahora puedes usar el índice:

for(int i = 0; i< votesList.Count, i++)
{
      chtVotes.Series[0].Points.Add(myXValues[i], votesList[i].NumVotes);
}

Respondido 28 ago 11, 03:08

No estoy seguro de entender, tengo una lista IEnumerable que devuelve una lista de pares de valores para RestName y RestVotes. Quiero trazar esos 2 valores en el gráfico. Algo como: chVotes.Series [0] .Points.Add (votesList.RestName [i], votesList.RestVotes [i]); - Susan

Acabo de agregar mi consulta de datos a la pregunta. - Susan

@Susan: actualizado para tener en cuenta su estructura de datos. Como nota al margen, puede declarar su countVotes() método para regresar IList<NumVotesInfo> entonces no necesitas usar ToList() nuevamente para usar el índice. - Vidrio roto

cuando trato de usar votesList [i}, intellsense afirma que, "No se puede aplicar indesing a con [] a un tipo de expresión systems.Collection.Generic.IEnuerable - Susan

@Susan: Eso es porque su método actualmente regresa IEnumerable<NumVotesInfo> - ver mi comentario anterior o usar ToList() - Vidrio roto

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.