我有一个实体:
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;
答案 0 :(得分:3)
有很多方法可以做到这一点。所有这些都取决于您将如何处理返回的IEnumerable<Branch>
。
1)你可以使用匿名类型,但返回它会需要更多的黑客攻击。
var branches = repository.Branches
.Where(b => b.LastModified > modifiedSince)
.Select(b => new { b.BranchID, b.Name })
.AsEnumerable();
2)或者你可以返回id
和name
的元组。
var branches = repository.Branches
.Where(b => b.LastModified > modifiedSince)
.Select(b => Tuple.Create(b.BranchID, b.Name))
.AsEnumerable();
return branches;
3)您可能想要创建自己的类,它只包含分支的ID和名称。
4)或者你可以为分支类提供一个替代构造函数,只有name
和id
作为参数传递。所有这些都取决于你的背景。
我倾向于选择元组方法。