
LINQ之DefaultIfEmpty
发布日期:2021-05-07 00:14:37
浏览次数:27
分类:精选文章
本文共 4371 字,大约阅读时间需要 14 分钟。
DefaultIfEmpty()
如果使用DefaultIfEmpty()
的数组或列表为空,则返回元素类型的默认值。
public static IEnumerable<TSource> DefaultIfEmpty<TSource>( this IEnumerable<TSource> source );
代码示例:
public static class Program{ static void Main( string[] args ) { int[] numbersA = new int[] { 0, 1, 2 }; int[] numbersB = new int[] { }; IEnumerable numbersAPlus = numbersA.DefaultIfEmpty(); IEnumerable numbersBPlus = numbersB.DefaultIfEmpty(); System.Console.WriteLine( "numbersA :{0}", numbersA.Text() ); System.Console.WriteLine( "numbersAPlus :{0}", numbersAPlus.Text() ); System.Console.WriteLine( "numbersB :{0}", numbersB.Text() ); System.Console.WriteLine( "numbersBPlus :{0}", numbersBPlus.Text() ); System.Console.ReadKey(); } public static string Text( this IEnumerable i_source ) { string text = string.Empty; foreach( var value in i_source ) { text += string.Format( "[{0}], ", value ); } return text; }}numbersA :[0], [1], [2],numbersAPlus :[0], [1], [2],numbersB :numbersBPlus :[0],
DefaultIfEmpty()可以将为空时返回的值通过参数传递。
public static IEnumerable<TSource> DefaultIfEmpty<TSource>( this IEnumerable<TSource> source, TSource defaultValue );
代码示例:
public static class Program{ static void Main( string[] args ) { int[] numbersA = new int[] { 0, 1, 2 }; int[] numbersB = new int[] { }; int defaultNumber = -1; IEnumerable numbersAPlus = numbersA.DefaultIfEmpty( defaultNumber ); IEnumerable numbersBPlus = numbersB.DefaultIfEmpty( defaultNumber ); System.Console.WriteLine( "numbersA :{0}", numbersA.Text() ); System.Console.WriteLine( "numbersAPlus :{0}", numbersAPlus.Text() ); System.Console.WriteLine( "numbersB :{0}", numbersB.Text() ); System.Console.WriteLine( "numbersBPlus :{0}", numbersBPlus.Text() ); System.Console.ReadKey(); } public static string Text( this IEnumerable i_source ) { string text = string.Empty; foreach( var value in i_source ) { text += string.Format( "[{0}], ", value ); } return text; }}numbersA :[0], [1], [2],numbersAPlus :[0], [1], [2],numbersB :numbersBPlus :[-1],
您还可以在自己的class
中使用它,如下所示。
代码示例:
public static class Program{ private class Parameter { public int ID { get; set; } public int Age { get; set; } public string Name { get; set; } public override string ToString() { return string.Format( "ID:{0}, Age:{1}, Name:{2}", ID, Age, Name ); } } static void Main( string[] args ) { Parameter[] parametersA = new Parameter[] { new Parameter() { ID = 0, Age = 52, Name = "正一郎" }, new Parameter() { ID = 8, Age = 28, Name = "清次郎" }, new Parameter() { ID = 3, Age = 20, Name = "誠三郎" }, new Parameter() { ID = 4, Age = 18, Name = "征史郎" }, }; Parameter[] parametersB = new Parameter[] { }; Parameter defaultparameter = new Parameter() { ID = -1, Age = 0, Name = "无名" }; IEnumerableparametersAPlus = parametersA.DefaultIfEmpty( defaultparameter ); IEnumerable parametersBPlus = parametersB.DefaultIfEmpty( defaultparameter ); System.Console.WriteLine( "parametersA :{0}", parametersA.Text() ); System.Console.WriteLine( "parametersAPlus :{0}", parametersAPlus.Text() ); System.Console.WriteLine( "parametersB :{0}", parametersB.Text() ); System.Console.WriteLine( "parametersBPlus :{0}", parametersBPlus.Text() ); System.Console.ReadKey(); } public static string Text( this IEnumerable i_source ) { string text = string.Empty; foreach( var value in i_source ) { text += string.Format( "[{0}], ", value ); } return text; }} parametersA :[ID:0, Age:52, Name:正一郎], [ID:8, Age:28, Name:清次郎], [ID:3, Age:20, Name:誠三郎], [ID:4, Age:18, Name:征史郎],parametersAPlus :[ID:0, Age:52, Name:正一郎], [ID:8, Age:28, Name:清次郎], [ID:3, Age:20, Name:誠三郎], [ID:4, Age:18, Name:征史郎],parametersB :parametersBPlus :[ID:-1, Age:0, Name:无名],
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月31日 13时14分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP官方网站及PHP手册
2021-05-09
mcrypt加密以及解密过程
2021-05-09
mysql连续聚合
2021-05-09
go等待N个线程完成操作总结
2021-05-09
消息队列 RocketMQ 并发量十万级
2021-05-09
ReactJs入门教程-精华版
2021-05-09
乐观锁悲观锁应用
2021-05-09
简单说说TCP三次握手、四次挥手机制
2021-05-09
.net Core 使用IHttpClientFactory请求
2021-05-09
多线程之旅(准备阶段)
2021-05-09
Python 之网络式编程
2021-05-09
MySql5.5安装步骤及MySql_Front视图配置
2021-05-09
springmvc Controller详解
2021-05-09
mybatis #{}和${}区别
2021-05-09
Java Objects工具类重点方法使用
2021-05-09
Java内存模型(JMM)
2021-05-09
AQS相关
2021-05-09