c# – Func访问参数
发布时间:2020-12-15 23:31:24 所属栏目:百科 来源:网络整理
导读:我正在创建一个扩展方法: public static IEnumerableT GroupAndSortByT(this IEnumerableT source) 我想从任何集合中调用此方法: myCollection.GroupAndSortBy(x = x.MyParam) MyParam必须是一个字符串,因为我想在字母分组的方法中使用它. 这样做,我应该将
我正在创建一个扩展方法:
public static IEnumerable<T> GroupAndSortBy<T>(this IEnumerable<T> source) 我想从任何集合中调用此方法: myCollection.GroupAndSortBy(x => x.MyParam) MyParam必须是一个字符串,因为我想在字母分组的方法中使用它. 这样做,我应该将方法签名更改为: public static IEnumerable<T> GroupAndSortBy<T>(this IEnumerable<T> source,Func<T,string> key) 问题是,现在我无法访问我作为参数传递的实际字符串,但我想做这样的事情: source.GroupBy(key.ToLower().FirstOrDefault()); 你能帮助我吗? 解决方法
由于key是一个委托,你应该调用它,如下所示:
source.GroupBy(t => key(t).ToLower().FirstOrDefault()); 这告诉LINQ,为了从类型T的源值t获取组密钥,需要调用密钥(t),将其转换为小写,并获取第一个字母(如果有). 注意:如果您想要的只是第一个字母,则无需将整个键转换为小写: source.GroupBy(t => char.ToLower(key(t).FirstOrDefault())); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |