2017-06-17 37 views
1

我的實體框架查詢沒有返回任何值。我想通過實體框架複製這個查詢:SELECT name FROM guitarBrands WHERE image = image。所以我最終嘗試下面的代碼。實體框架查詢不能使用asp.net

public static string GetBrandByImage(string imageType) 
{ 
    BrandsDBEntities obj = new BrandsDBEntities(); 

    string name = (from g in obj.guitarBrands where g.image == imageType select g.name).ToString(); 

    return name; 
} 

我在使用實體框架,真正的新,我真的希望你們能提供這種解決方案。

+0

一些事情:請提供更多信息,特別是查詢返回的是什麼。它是'空'嗎?它是一個空字符串嗎?其次,你有沒有嘗試過使用LINQ進行相同的查詢? ('string name =(obj.Set ()。where(g => g.image == imageType).Select(g => g.name).ToString();'第三,你應該總是使用'在上下文中使用''使用(var obj = new BrandsDBEntities()){...}'最後,你使用的是什麼版本的EF? – Sentry

回答

2
(from g in obj.guitarBrands where g.image == imageType select g.name) 

返回一個列表就像一個SQL查詢

要獲得的第一個元素

(from g in obj.guitarBrands where g.image == imageType select g.name).First().Tostring(); 

或同等

obj.guitarBrands.Where(g => g.image == imageType).First().name; 
+0

請注意,如果沒有匹配和「First」被調用,得到一個例外。 – Nkosi

1

要調用ToString上查詢本身。查詢需要枚舉第一

public static string GetBrandByImage(string imageType) { 
    using(var obj = new BrandsDBEntities()) {  
     var name = (from g in obj.guitarBrands 
        where g.image == imageType 
        select g.name).FirstOrDefault(); 

     return name; 
    } 
} 

在查詢中使用FirstOrDefault的是會從任何吉他品牌,如果沒有找到匹配的斷言或null匹配返回第一個name