C# Linq到sql到对象列表中 请考虑以下表格: TBL文件 TblPage TblFieldName TblFieldValue 公共类文档 { 公共int DocID{get;set;} 公共int-LevelID{get;set;} 公共字符串名称{get;set;} 公共列表元数据 { 获取{return(_字段);} 设置{u fields=value;} } 私有列表_fields=新列表(); } 公共类字段 { public FieldNameID{get;set;} 公共字段名{get;set;} 公共字段值{get;set;} }

C# Linq到sql到对象列表中 请考虑以下表格: TBL文件 TblPage TblFieldName TblFieldValue 公共类文档 { 公共int DocID{get;set;} 公共int-LevelID{get;set;} 公共字符串名称{get;set;} 公共列表元数据 { 获取{return(_字段);} 设置{u fields=value;} } 私有列表_fields=新列表(); } 公共类字段 { public FieldNameID{get;set;} 公共字段名{get;set;} 公共字段值{get;set;} },c#,linq-to-sql,C#,Linq To Sql,现在,我正在尝试使用工作正常的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 =>

现在,我正在尝试使用工作正常的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>();
 }
使用(DBDataContext=new DBDataContext())
{
列表文档=(来自context.TblDocuments中的d)
将d.docID上context.TblPages中的p等于p.docID连接到dpgrp中
来自dpgrp.Where(f=>f.docID==d.docID).DefaultIfEmpty()中的dp
其中d.levelID==201
选择新文档
{
DocumentID=d.docID,
LevelID=d.levID
}).ToList();
}
有人能帮助我如何在列表中获取字段值吗

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>();
 }
使用(DBDataContext=new DBDataContext())
{
列表文档=(来自context.TblDocuments中的d)
将d.docID上context.TblPages中的p等于p.docID连接到dpgrp中
来自dpgrp.Where(f=>f.docID==d.docID).DefaultIfEmpty()中的dp
其中d.levID==201
选择新文档
{
DocumentID=d.docID,
LevelID=d.levID
元数据=????????//如何实现这一点?因为它是一个列表
}).ToList();
}

我建议对L2S使用
DataLoadOptions

options.LoadWith<Document>(d => d.Metadata);
options.LoadWith(d=>d.Metadata);

d.列表中的某个东西有什么不对?如果不需要整个列表,而只需要
字段中的值,则可以使用子查询。@GrantThomas:How?你能写一个示例查询吗?我从来不知道LoadWith()会让事情变得更简单。谢谢
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;}
    }
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>();
 }
options.LoadWith<Document>(d => d.Metadata);