Как выбрать родительские строки и дочерние строки только с конкретными столбцами - PullRequest
0 голосов
/ 01 марта 2012

Итак, у меня есть две таблицы, которые имеют разметку вроде (но без имени):

Table A
-------
AID
Title
ACol1
ACol2 ... (to ACol60)

и

Table B
-------
BID
AID
Title
BCol1
BCol2 ... (to BCol30)

Я построил простой класс

public class SimpleCollection
{
    public Guid ID { get; set; }
    public string Title { get; set; }
    public IEnumerable<SimpleCollection> Elements { get; set; }
}

Я пытаюсь сделать что-то в два раза:

  1. Вернуть в один вызов все родительские / дочерние строки.
  2. Выберите только те столбцы, которые мне нужны, поэтому я не тяну лишние 60/30 ненужных мне столбцов.

Я попробовал следующее:

var query = from A in dbContext.TableA
            from B in A.TableB
            select new SimpleCollection()
            {
                ID = A.AID,
                Title = A.Title,
                Elements = select new SimpleCollection<string>()
                {
                    ID = B.BID,
                    Title = B.Title
                }
            };

Но ему не нравится устанавливать Elements в операторе select.

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Мне кажется, я переоценил проблему.

var query = dbContext.TableA
                     .Select(p => new SimpleCollection()
                     {
                       ID = p.AID,
                       Title = p.Title,
                       Elements = p.TableBs
                                   .Select(c => new SimpleCollection()
                                   {
                                     ID = c.BID,
                                     Title = C.Title
                                   }
                     }                  
1 голос
/ 01 марта 2012
var query = from A in dbContext.TableA
            from B in A.TableB
            group B by A into g
            select new SimpleCollection()
            {
                ID = g.Key.AID,
                Title = g.Key.Title,
                Elements = g.Select(x => new SimpleCollection {ID = x.BID, x.Title}).ToList()
            };
...