LINQ to SQL的到对象列表 [英] Linq to sql into object list

查看:82
本文介绍了LINQ to SQL的到对象列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请考虑下面的表格:



TblDocument



 的docID, levelID,名称
101,201,AAA
102,201,血脑屏障
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,字段名
1,201,WrittenBy
2,201,VerifiedBy
3,201,DocumentName



TblFieldValue



 的docID,fieldNameID,fieldValue方法
101,1,詹姆斯
101,2,债券
101,3,东西
102,1征文,克里斯特
102, 2,霍尔姆
102,3,圣母院与否!






 公开类文件
{
公众诠释的DocID {搞定;设置;}
公众诠释LevelID {搞定;设置;}
公共字符串名称{;设置;}

公开名单<外勤及GT;元数据
{
{返回(_fields); }
集合{_fields =价值; }
}
私有列表<外勤及GT; _fields =新的List<外勤及GT;();
}


公共类字段
{
公共FieldNameID {搞定;设置;}
公共字段名{搞定;设置;}
公共fieldValue方法{搞定;设置;}
}

现在,我正尝试获取来自使用LINQ数据库数据。正常工作

 使用(DBDataContext上下文=新DBDataContext())
{
名单<文件> DOC =(从D在context.TblDocuments
在d.docID context.TblPages加入p等价于p.docID到来自DP在dpgrp.Where(dpgrp
F => f.docID = D .docID).DefaultIfEmpty()
,其中d.levelID == 201
选择新的文档
{
DocumentID = d.docID,
LevelID = d.levID $ 。b $ b})了ToList<文件>();
}



有人能帮助我,我怎样才能在列表中的字段值?

 使用(DBDataContext上下文=新DBDataContext())
{
名单<文件> DOC =(从D在context.TblDocuments
在d.docID context.TblPages加入p等价于p.docID到来自DP在dpgrp.Where(dpgrp
F => f.docID = D .docID).DefaultIfEmpty()
,其中d.levID == 201
选择新的文档
{
DocumentID = d.docID,
LevelID = d.levID
=元// ???????如何实现这一目标,因为它是一个列表
})了ToList<?&文件GT;();
}


解决方案

我建议使用 DataLoadOptions 为L2S

  options.LoadWith<文件>(D = D 1和D .Metadata); 


Please consider following tables:

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;}
    }

Now, I am trying to fetch data from database using linq that works fine.

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>();
 }

Can someone help me how can I get field values in a list?

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>();
 }

解决方案

I suggest to use DataLoadOptions for L2S

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

这篇关于LINQ to SQL的到对象列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆