请考虑下表:
Tbl文档
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>();
}