我有一个函数,它从集合中返回属性值列表:
public static List<string> GetSpeakerList()
{
var Videos = QueryVideos(HttpContext.Current);
return Videos.Where(v => v.Type == "exampleType"
.SelectMany(v => v.SpeakerName)
.Distinct()
.OrderBy(s => s)
.ToList();
}
我想要一个通用版本,它可以让我确定我想要投影的字段 - 而不是SpeakerName我想允许选择Video.Length或Video.Type。
我理解SelectMany采用Func,那么使Func可配置为允许将其作为参数传递给此函数的最佳方法是什么?
答案 0 :(得分:5)
将该函数作为参数添加到方法中。
public static List<string> GetVideosAttribute( Func<Video,string> selector )
{
var Videos = QueryVideos(HttpContext.Current);
return Videos.Where(v => v.Type == "exampleType"
.Select( selector )
.Distinct()
.OrderBy(s => s)
.ToList();
}
var speakers = GetVideosAttribute( v => v->SpeakerName );
var topics = GetVideosAttribute( v => v->Topic );