如何使用Linq To Sql中的强类型模型检索数据

时间:2014-05-02 04:56:33

标签: c#-4.0 linq-to-sql

此代码工作正常。

using (ContextDB db = new ContextDB())
{
            var custAcct  = (from c in db.CustAccts
                           select new 
                            {
                                c.AcctNo,
                                c.Company,
                                c.UserName
                            }).ToList();

但是这个没有

public class CustAcct
{
        public int AcctNo { get; set; }      
        public string Company { get; set; }
        public string UserName { get; set; }
}

 ....
 ....
 ....

   using (ContextDB db = new ContextDB())
        {
            CustAcct custAcct  = (from c in db.CustAccts
                           select new 
                            {
                                c.AcctNo,
                                c.Company,
                                c.UserName
                            }).ToList();

它返回此错误:

  

无法隐式转换类型' System.Collections.Generic.IEnumerable'到' EMailReader.Models.CustAcct'。存在显式转换(您是否错过了演员?)

我使用Google,发现了很多相关主题,但仍然无法使用可用的解决方案将其投入使用

我只需要将数据返回到强类型模型。

编辑:

经过更多研究后我发现这个解决方案,但我想知道为什么我不能直接从LinqToSql列表中检索。

       List<CustAcct> temp = new List<CustAcct>();
        IEnumerable<dynamic> items = custAcct;
        foreach (var item in items)
        {
            temp.Add(new CustAcct()
            {
                AcctNo = item.AcctNo,
                Company = item.Company,
                UserName = item.UserName,
            });
        }

1 个答案:

答案 0 :(得分:0)

您正在通过创建新类来定义这些属性。这将覆盖LINQ2SQL生成的类。

只需将“public class CustAcct”更改为“public partial class CustAcct”。

这将解决您的问题,您无需再次定义这些属性。从班上删除那些。这些将自动为您创建。

如果您可以发布课程,我会为您更改。

//希亚姆