我正在尝试在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
答案 0 :(得分:0)
您将通过
返回匿名类型的对象列表select new { ... }
这可能是你使用object作为方法的返回类型的原因。 比将返回值分配给特定类型。这就是抛出异常的原因。
为了完成这项工作,我将实现一个包含所有所需属性的新类。在
中使用它select new MyNewClass { Property1 = ...}
将方法的返回类型从对象更改为IEnumerable<MyNewClass>
。以及将返回值赋值给的变量。
您还应该在评论中使用Gert Arnold提到的PascalCase属性。
将select from in where
LINQ语法与Lambda方法.Where(x => ...)
混合使用很难阅读。