如何从linq数据库模型中获取数据

时间:2017-12-22 19:11:25

标签: c# sql-server linq

我正在尝试在C#程序中使用LINQ来从数据库中获取信息。我发现了很多显示基本到高级查询的示例,但是当我尝试构建时出现错误。请参阅下面的基本LINQ示例: LINQ

的类
 public class StdFy
{
    public object GetStdFy(DrillholeEntities ddb)
    {
        try
        {
            var myList = ((from t1 in ddb.DTM_QAQC_BLK_STD from t2  in ddb.DTM_STANDARDSASSAY.Where(x=> t1.STANDARDID==x.STANDARDID && t1.ASSAYVALUE==x.STANDARDVALUE)
                           select new
                           {
                               CHECKID = t1.CHECKID,
                               STANDARDID = t1.STANDARDID,
                               PRIORITY = t1.ASSAY_PRIORITY,
                               NAME = t1.ASSAYNAME,
                               ASSAYVALUE = t1.ASSAYVALUE,
                               STANDARDVALUE = t2.STANDARDVALUE,
                               STANDARDDEVIATION = t2.STANDARDDEVIATION,
                               NORMALIZACION = (t2.STANDARDVALUE- t1.ASSAYVALUE)/ t2.STANDARDDEVIATION,
                               LABJOBNO = t1.LABJOBNO,
                               LOADDATE = t1.RETURNDATE


                           })).OrderBy(x => x.LOADDATE).ToList();

            return myList;
        }
        catch (Exception)
        {              
            throw new NotImplementedException();
        }
    }
}

然后

DrillholeEntities ddb;
StdFy stdFy = new StdFy();
using (ddb = new DrillholeEntities())
                {

                    IOrderedEnumerable<DTM_QAQC_BLK_STD> datosTodos;
                    datosTodos = stdFy.GetStdFy(ddb);
                 }

当我支持该项目时,我得到了错误

  

严重级代码描述项目文件行抑制状态   错误CS0266无法隐式转换类型&#39;对象&#39;至   &#39; System.Linq.IOrderedEnumerable&#39 ;.   存在显式转换(你错过了吗?   cast?)Inspinia_MVC5 C:\ Users \ chachl9 \ Documents \ Visual Studio   2015 \ Projects \ MVC5_Full_Version \ Inspinia_MVC5 \ Controllers \ GraphsController.cs 55 Active

1 个答案:

答案 0 :(得分:0)

您将通过

返回匿名类型的对象列表
select new { ... }

这可能是你使用object作为方法的返回类型的原因。 比将返回值分配给特定类型。这就是抛出异常的原因。

为了完成这项工作,我将实现一个包含所有所需属性的新类。在

中使用它
select new MyNewClass { Property1 = ...}

将方法的返回类型从对象更改为IEnumerable<MyNewClass>。以及将返回值赋值给的变量。

您还应该在评论中使用Gert Arnold提到的PascalCase属性。

select from in where LINQ语法与Lambda方法.Where(x => ...)混合使用很难阅读。