2012-02-29 62 views
0

所以我必須有像佈局(而不是命名)兩個表:如何選擇僅與特定的列父母行和子行

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 
       } 
      }; 

但它不喜歡的設置元素的SELECT語句。

回答

1

我相信我是在思考問題。

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
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() 
      }; 
+0

'g.ToList()'不會將'g'的類型轉換爲'SimpleCollection'類型嗎? – 2012-02-29 23:10:19

+0

我已經更新了我的答案。 – 2012-03-01 05:39:22

+0

不會'query.ToList()'返回我重複的TableA行嗎? – 2012-03-01 16:15:47