0

次の表を検討してください。

TblDocument

docID,  levelID, name 
101,    201,     AAA 
102,    201,     BBB 
103,    201,     CCC 
104,    202,     DDD 
105,    202,     EEE 

TblPage

pgID, docID, pgNo
1,    101,   1
2,    102,   1
3,    102,   2
4,    103,   1
5,    104,   1
6,    105,   1

TblFieldName

fieldNameID, levelID, fieldName  
1,           201,     WrittenBy  
2,           201,     VerifiedBy 
3,           201,     DocumentName

TblFieldValue

docID,  fieldNameID, fieldValue 
101,    1,           James 
101,    2,           Bond  
101,    3,           Essay on something  
102,    1,           Krister
102,    2,           Holm
102,    3,           Dame it or not!  

public class Document
{
  public int DocID {get; set;}
  public int LevelID {get; set;}
  public string Name {get; set;}

  public List<Field> Metadata
  {
     get { return (_fields); }
     set { _fields = value; }
  }       
  private List<Field> _fields = new List<Field>();
}


public class Field
    {
      public FieldNameID {get; set;}
      public FieldName {get; set;}
      public FieldValue {get; set;}
    }

今、私は正常に動作するlinqを使用してデータベースからデータをフェッチしようとしています。

using (DBDataContext context = new DBDataContext())
{
  List<Document> doc  = (from d in context.TblDocuments
     join p in context.TblPages on d.docID equals p.docID into dpgrp
     from dp in dpgrp.Where(f => f.docID == d.docID).DefaultIfEmpty()
     where d.levelID == 201
     select new Document
     {
       DocumentID = d.docID,
       LevelID = d.levID
     }).ToList<Document>();
 }

誰かがリストのフィールド値を取得する方法を教えてもらえますか?

using (DBDataContext context = new DBDataContext())
{
  List<Document> doc  = (from d in context.TblDocuments
     join p in context.TblPages on d.docID equals p.docID into dpgrp
     from dp in dpgrp.Where(f => f.docID == d.docID).DefaultIfEmpty()
     where d.levID == 201
     select new Document
     {
       DocumentID = d.docID,
       LevelID = d.levID
       Metadata = ???????            // how to achieve this? as it is a list
     }).ToList<Document>();
 }
4

1 に答える 1

0

DataLoadOptionsL2Sに使用することをお勧めします

options.LoadWith<Document>(d => d.Metadata);
于 2013-01-07T13:03:23.073 に答える