我过了一些问题,google搜了一下,
但我找不到答案(那满足了我).
但我找不到答案(那满足了我).
基本上,我理解SingleOrDefault返回null或0(取决于类型).
但是我怎么能让它返回别的东西?
返回myChannels.All.Where(_Channel => _Channel.Guid == this.ParentChannelGuid).SingleOrDefault(_SPECIFICCHANNEL);
所以,我想要_SPECIFICCHANNEL被返回,以防它不是单一的..
可以做到吗
解决方法
这可以用相当简单的方法来实现.如果创建自己的扩展方法比通用的SingleOrDefault更具体,那么编译器将更喜欢更多的类型特定版本.下面是一个示例,显示如何使用简单的Person类(您可以将其复制粘贴到
LINQPad中以快速查看结果):
public class Person { public string Name { get; set; } public override string ToString() { return Name ?? ""; } } public static class PersonExtensionMethod { public static Person SingleOrDefault(this IEnumerable<Person> source) { var person = Enumerable.SingleOrDefault(source); if (person == null) return new Person { Name = "Unnamed" }; return person; } } public static void Main() { var emptyCollection = new Person[0]; var nonEmptyCollection = new Person[] { new Person { Name = "Jack" } }; Debug.WriteLine("Empty collection: " + emptyCollection.SingleOrDefault()); Debug.WriteLine("Non-empty collection: " + nonEmptyCollection.SingleOrDefault()); }
在上述示例中,SingleOrDefault(IEnumerable< Person>)优先于不太具体的SingleOrDefault T(IEnumerable T).
原文地址:https://www.jb51.cc/csharp/92714.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。