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;} }
现在,我正在尝试使用工作正常的linq从数据库中获取数据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 =>
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);