2016-07-22 58 views
-3

Select查询我从数据库使用LINQ

[Serializable] 
Public sealed class LayEntity : EntityBase 
{ 
    Public string Name {get;set;} // Getting mapped to the same column name in db table 
} 

在我的.cs称为实体类文件我有一个查询为:

LayEntity lay = null; 
Using(var context = new DBContext()) 
{ 
    lay = context.LayTable.where(x=>x.id >1).Select (y=>y.Name).FirstOrDefault(); 
} 

我的目的是存储检索名称提交的到实体类。 但我得到一个编译时错误为'不能隐式地将字符串转换为实体'。那我需要做什么?

+0

为什么不发布代码,至少编译? – Dennis

+0

你选择'y => y.Name'这是一个'string',并尝试将它分配给'lay',它是'LayEntity'。删除'.Select(y => y.Name)',它会起作用。 –

回答

2

你可以最有可能做到这一点:

lay = context.LayTable 
      .Where(x=>x.id >1) 
      .Select (y=>new LayEntity(){Name=y.Name}) 
      .FirstOrDefault(); 

或者这样:

lay = context.LayTable.where(x=>x.id >1).FirstOrDefault(); 

甚至这样的:

lay = context.LayTable.FirstOrDefault(x=>x.id >1); 

如果你希望一个值我这样做:

lay = context.LayTable.SingleOrDefault(x=>x.id >1); 
2

错误信息是明确的,你不能分配string值类型的反对LayEntity

也许,你需要的是

LayEntity lay = null; 
Using(var context = new DBContext()) 
{ 
    lay = context.LayTable.FirstOrDefault(x=>x.id >1); 

    if(lay != null) 
    { 
     lay.Name; // use name here. 
    } 
} 

注意,我已经删除Where方法,因为它是在该冗余案件。