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 = "无名" };        IEnumerable
parametersAPlus = 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:无名],
上一篇:LINQ之Where
下一篇:LINQ之Take, TakeWhile

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年03月31日 13时14分07秒