我如何通过设置参数Func键LINQ投影的SelectMany? [英] How can I set LINQ SelectMany projection via Func parameter?

查看:121
本文介绍了我如何通过设置参数Func键LINQ投影的SelectMany?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个从集合返回属性值列表的功能:

I have a function which returns a list of property values from a collection:

	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

I'd like to have a generic version which will let me determine which field I'd like projected - say instead of SpeakerName I'd like to allow selecting Video.Length or Video.Type.

我明白的SelectMany需要一个Func键,有啥使Func键可设置成允许把它当作参数传入这个函数的最好方法是什么?

I understand that SelectMany takes a Func, so what's the best way to make the Func configurable to allow passing it as a parameter into this function?

推荐答案

添加功能作为参数传递给方法

Add the function as a parameter to the method.

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

这篇关于我如何通过设置参数Func键LINQ投影的SelectMany?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆