加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读