2017-08-10 7 views
0

LINQを使用してデータベースからデータを取得し、サブクエリからオブジェクトを取得する方法について質問があります。これは私が引っ張っていたクラスです:サブクエリで1つの要素を選択する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、 メール= x.Email、 のserialNumber = x.SerialNumbers.FirstOrDefault()ID、 })。何らかの理由で、私はnullポインタの例外を取得していますが、その理由はありますか? –

+0

ご迷惑をおかけします。 –

+0

私はSerialNumbers.FirstOrDefault()のヌルチェックポイントを見つけられませんでしたか?それは長い一日であり、まっすぐ考えることではありませんでした。助けをありがとう –

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

私は、すべてのユーザーがすべて1つのシリアル番号を持つ –

+0

するvarユーザー=(databaseConnection.Users .OrderByを返すようにしたいです(c => c.Name)) –

関連する問題