2017-08-10 39 views
0

我正在使用LINQ從數據庫中提取數據,並且有關於從子查詢中提取對象的問題。這是我拉類:在子查詢中選擇一個元素LINQ

public class Users 
{ 
    public Users() 
    { 
     SerialNumbers = new HashSet<SerialNumbers>(); 
    } 

    /// <summary> 
    /// The User's Unique Id 
    /// </summary> 
    public Guid Id { get; set; } 

    /// <summary> 
    /// The Users name 
    /// </summary> 
    public string Name { get; set; } 

    /// <summary> 
    /// The Users email. This can be null/empty string 
    /// </summary> 
    public string Email { get; set; } 

    public virtual ICollection<SerialNumbers> SerialNumbers { get; set; } 

} 

如何選擇從序列號集合的第一個元素,而不是整個集合本身?

感謝

回答

0

你應該做一個DataTransferObject並映射到它:

context.Users.Select(x => new UserDto 
{ 
    Id = x.Id, 
    Name = x.Name, 
    Email = x.Email, 
    SerialNumber = x.SerialNumbers.FirstOrDefault() 
}); 
+0

好吧,我接受了你的建議並創建了一個DTO,這就是我所擁有的,IEnumerable users = databaseConnection.Users.Select(x => new UserDTO { Id = x.Id, Name = x.Name, Email = x.Email, serialNumber = x.SerialNumbers.FirstOrDefault()。Id, });出於某種原因,我得到一個空指針異常,但是,有沒有原因呢? –

+0

對此格式感到抱歉 –

+0

我只是缺少一個空檢查SerialNumbers.FirstOrDefault()?。名稱。這將是一個漫長的一天,並沒有直接思考。感謝您的幫助 –

0
var serial = context.Users.FirstOrDefault().SerialNumbers.FirstOrDefault(); 
+0

我想回到所有用戶的所有有一個序列號 –

+0

VAR用戶=(databaseConnection.Users .OrderBy (c => c.Name)) –