[英]Linq to sql into object list
请考虑以下表格:
docID, levelID, name
101, 201, AAA
102, 201, BBB
103, 201, CCC
104, 202, DDD
105, 202, EEE
pgID, docID, pgNo
1, 101, 1
2, 102, 1
3, 102, 2
4, 103, 1
5, 104, 1
6, 105, 1
fieldNameID, levelID, fieldName
1, 201, WrittenBy
2, 201, VerifiedBy
3, 201, DocumentName
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>();
}
我建议对L2S使用DataLoadOptions
options.LoadWith<Document>(d => d.Metadata);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.