Cur*_*Fro 0 c# linq refactoring
我有4个类属性,具有相似的签名,但具有不同的linq属性.我如何创建一个委托或其他东西来清理它?
例如:
public IEnumerable<SelectListItem> DistinctUsers
{
get
{
var list = TraceLogs.OrderBy(x => x.Username).Select(x => x.Username).Distinct();
return (from s in list select new SelectListItem { Value = s, Text = s }
);
}
}
public IEnumerable<SelectListItem> DistinctMethods
{
get
{
var list = TraceLogs.OrderBy(x => x.Method).Select(x => x.Method).Distinct();
return (from s in list select new SelectListItem { Value = s, Text = s }
);
}
}
Run Code Online (Sandbox Code Playgroud)
听起来你想要一些像:
private IEnumerable<SelectListItem> GetDistinctOrderedLogs<T>
(Func<TraceLogs, T> extraction)
{
return TraceLogs.OrderBy(extraction)
.Select(extraction)
.Distinct()
.Select(s => new SelectListItem { Value = s, Text = s });
}
Run Code Online (Sandbox Code Playgroud)
然后:
public IEnumerable<SelectListItem> DistinctMethods
{
get { return GetDistinctOrderedLogs(t => t.Method); }
}
public IEnumerable<SelectListItem> DistinctUsers
{
get { return GetDistinctOrderedLogs(t => t.Users); }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |