Estoy tratando de agregar un parámetro adicional para una lista de objetivos ef de objetos para el seguimiento de procesamiento, pero sigo corriendo en tener que inicializar cada elemento de la lista de forma explícita. ¿Cuál es la correcta linq manera de hacer esto? Aparte de la sequedad, hay alguna ventaja para un linq sintaxis en este caso?

List<app_subjects> subjectList = AppMySQLQueries.GetAllSubjects();
List<Tuple<app_subjects, bool>> subjectCollection = new List<Tuple<app_subjects, bool>>(subjectList.Count);

foreach (app_subjects subject in subjectList)
{
     subjectCollection.Add(Tuple.Create(subject, false));
}

He buscado en el sitio sin éxito.

LINQ puede hacer esto, pero se ve muy similar a una tradicional for o foreach.
LINQ también haría de la iteración, de (internamente)
La diferencia es que con LINQ usted puede ser capaz de aplazar la ejecución de la obra.
cierto, pero no cuando él llama a lista, la cual, dado el código de ejemplo, podría ser necesario.
a menudo, usted no tiene control sobre qué tipo de colecciones se utilizan en una madura de la base de código.

OriginalEl autor aldosa | 2013-09-06

3 Comentarios

  1. 12

    Sólo desea utilizar una proyección aquí ( Select ) que aplica la transformación en su expresión lambda para cada elemento en la colección de origen.

    List<Tuple<app_subjects, bool>> tuples = subjectList.Select(x => new Tuple<app_subjects, bool>(x, false)).ToList();

    La ToList() llamada no es del todo necesario, si se la quitó, a continuación, el método devolverá un IEnumerable<Tuple<app_subjects, bool>>. Si sólo vas a recorrer en iteración la colección de tuplas después de la ToList llamada debe ser eliminado ya que las fuerzas de la ejecución (enumera los IEnumberable) y, a continuación, su siguiente operación (foreach) haría lo mismo, haciendo que el código de peor desempeño.

    Lo sentimos, la expresión lambda «x.tema» no es válido debido a que se resuelve a un método en la clase de ef, no de la misma clase.
    sí, yo lo he puesto en una edición. Pensé app_subject era una propiedad de los objetos en el subjectList colección. Ya que es en realidad sólo un List<app_subject debe ser x en lugar de x.subject.
    Gracias por la aclaración anterior. Que tiene sentido.
    Uso ConvertAll lugar.
    ¿cuál es la ventaja de usar ConvertAll?

    OriginalEl autor evanmcdonnal

  2. 5

    Como este?

    subjectList.Select(s => Tuple.Create(s, false)).ToList();

    OriginalEl autor dcastro

  3. 0

    probar esta.

    List<Tuple<app_subjects, bool>> subjectCollection = subjectList.CovertAll( subject => new Tuple<app_subjects, bool>(){
    subject,
    false
    }).ToList();
    Lo siento, tiene que ser Tupla.Crear(…), no nueva Tupla.

    OriginalEl autor sudhAnsu63

Dejar respuesta

Please enter your comment!
Please enter your name here