Pregunta

Estoy en un poco de un obstáculo en el camino aquí, pero lo que me gustaría que en última instancia hacer es crear un conjunto de registros con sede fuera de una consulta y almacenar la información en objetos separados (llamémosles Foo) a continuación, crear una nueva consulta para agrupar todos los objetos Foo con los mismos identificadores en un ArrayList en objetos de barras. ¿Cómo voy a ir haciendo esto en LINQ to SQL?

public class Foo{
    public int id{get;set;}
    public string name{get;set;}
}

public class Bar{
    public ArrayList foos{get;set;}
}

var query = from tFoo in fooTable join tFoo2 in fooTable2 on tFoo.id equals tFoo2.id
            where tFoo2.colour = 'white'
            select new Foo
            {
                 id = tFoo.idFoo,
                 name = tFoo.name
            };

var query2 = //iterate the first query and find all Foo objects with the the same
             //tFoo.idFoo and store them into Bar objects

Así que, al final, que debería tener un conjunto de registros de objetos bar con una lista de objetos Foo.

¿Fue útil?

Solución

Es un poco difícil decir si quieres 1 Barra o varios bares, pero aquí es mi mejor arma blanca con la información proporcionada.

Suponiendo que tenía:

public class Foo
{
  public int id {get;set;}
  public string name {get;set;}
  public string colour {get;set;}
}

public class Bar
{
  public int id {get;set;}
  public List<Foo> Foos {get;set;}
}

A continuación, usted podría hacer:

//executes the query and pulls the results into memory
List<Foo> aBunchOfFoos =
(
  from foo in db.Foos
  where foo.colour == "white"
  select foo
).ToList();

// query those objects and produce another structure.
//  no database involvement
List<Bar> aBunchOfBars =  aBunchOfFoos
  .GroupBy(foo => foo.id)
  .Select(g => new Bar(){id = g.Key, Foos = g.ToList() })
  .ToList();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top