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;

我怎样才能只返回BranchIDName

我试过这个:

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();

2) 或者你可以返回一个idand的元组name

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

3)您可能想要创建自己的类,该类仅包含分支的 id 和名称。

4)或者您可以为分支类提供一个备用构造函数,只使用nameid作为参数传递。这一切都取决于您的上下文。

我更喜欢这里的元组方法。

于 2013-11-04T06:00:42.573 回答