2016-07-22 72 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方法,因爲它是在該冗餘案件。