0

私はエンティティを持っています:

public class Branch
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int BranchID { get; set; }
    public string Name { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string Postcode { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Country { get; set; }
}

ブランチ オブジェクトを返す apicontroller 関数があります。

IEnumerable<Branch> branches = null;
branches = repository.Branches.Where(b => b.LastModified > modifiedSince).AsEnumerable();

return branches;

とのみを返すにはどうすればよいBranchIDですNameか?

私はこれを試しました:

IEnumerable<Branch> branches = null;

branches = repository.Branches
    .Where(b => b.LastModified > modifiedSince)
    .Select(b => new Branch  {BranchID = b.BranchID, Name = b.Name })
    .AsEnumerable();

return branches;
4

1 に答える 1

3

これを行うには多くの方法があります。すべては、返された をどのように処理するかによって異なりますIEnumerable<Branch>

1) 匿名型を使用することもできますが、それを返すにはさらにハックが必要です。

var branches =  repository.Branches
                          .Where(b => b.LastModified > modifiedSince)
                          .Select(b => new { b.BranchID, b.Name })
                          .AsEnumerable();

id2) または、 andのタプルを返すこともできますname

var branches =  repository.Branches
                          .Where(b => b.LastModified > modifiedSince)
                          .Select(b => Tuple.Create(b.BranchID, b.Name))
                          .AsEnumerable();
return branches;

3) ブランチの ID と名前だけを保持する独自のクラスを作成したい場合があります。

4) または、引数として渡されたnameandだけを使用して、分岐クラスの代替コンストラクターを提供することもできます。idそれはすべて、コンテキストに依存します。

ここでは、タプル アプローチを好む傾向があります。

于 2013-11-04T06:00:42.573 に答える