2014-02-11 114 views
0

ClientAccountAccess表只會有一條記錄,其中包含一個ID和一個GUID。 我想返回GUID作爲字符串。返回表中唯一的記錄值

private static string GetAccessCode() 
{ 
    using (EPOSEntities db = new EPOSEntities()) 
    { 
     string clientAccessCode = from e in db.ClientAccountAccesses 
            where string.IsNullOrWhiteSpace(e.GUID) 
            select e.GUID; 

     return clientAccessCode; 
    } 
} 

選擇是拋出一個錯誤,說斜面轉換IEnumerable的字符串,但我不希望創建一個IEnumerable clientAccessCode,正如我說,會永遠只能是在這個表中的一個記錄,我想返回的值GUID。

? 感謝答覆

+2

如果只有一個記錄,爲什麼你打擾過濾?過濾只包含空/空值是特別奇怪的... –

回答

5

使用FirstOrDefault()SingleOrDefault()如果不應該有一個以上的匹配結果:

private static string GetAccessCode() 
{ 
    using (EPOSEntities db = new EPOSEntities()) 
    { 
     var clientAccessCodes = from e in db.ClientAccountAccesses 
           where string.IsNullOrWhiteSpace(e.GUID) 
           select e.GUID; 

     return clientAccessCodes.FirstOrDefault(); 
    } 
} 

注 - 查詢的結果將是IEnumerable<string>類型。你也可以使用lambda語法:

private static string GetAccessCode() 
{ 
    using (EPOSEntities db = new EPOSEntities()) 
    { 
     return db.ClientAccountAccesses 
       .Where(e => String.IsNullOrWhiteSpace(e.GUID)) 
       .Select(e => e.GUID) 
       .FirstOrDefault(); 
    } 
} 
相關問題