使用linq从db中选择查询

时间:2016-07-22 06:59:50

标签: c# .net entity-framework 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();
}

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

2 个答案:

答案 0 :(得分: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方法,因为在这种情况下它是多余的。

答案 1 :(得分: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);