Linq union usage?

前端 未结 3 1692
温柔的废话
温柔的废话 2020-12-06 02:11

Sql:

SELECT date,total_usage_T1 as TotalUsageValue,\'T1\' as UsageType FROM TblSayacOkumalari
UNION ALL
SELECT date,total_usage_T2 as TotalU         


        
相关标签:
3条回答
  • 2020-12-06 02:37

    EDIT

    Def. from MSDN
    Enumerable.Concat  - Concatenates two sequences.
    Enumerable.Union    - Produces the set union of two sequences by using the default equality comparer.
    

    My post : Concat() vs Union()

        IEnumerable<TblSayacOkumalari> sayac_okumalari = 
       entity.TblSayacOkumalari
         .Select(x => new
              {     
                    date= x.date, 
                    TotalUsageValue = x.total_usage_T1,
                    UsageType     = "T1" 
               })
         .Concat(entity.TblSayacOkumalari
          .Select(x => new
              { 
                    date= x.date,
                    TotalUsageValue =  x.total_usage_T2, 
                    UsageType     = "T2" }
       )); 
    

    for usage type you juse need to add UsageType = "T2" in your new anonymous type as i did above this will do the task for you


    Than you should go for Concat method rather than Union method ..

    Example

     int[] ints1 = { 1, 2, 3 }; int[] ints2 = { 3, 4, 5 };
     IEnumerable<INT> union = ints1.Union(ints2);
     Console.WriteLine("Union");
     foreach (int num in union)
     {
        Console.Write("{0} ", num);
     }
     Console.WriteLine();
     IEnumerable<INT> concat = ints1.Concat(ints2);
     Console.WriteLine("Concat");
     foreach (int num in concat)
     {
        Console.Write("{0} ", num);
     } 
    

    output

    enter image description here

    Fact about Union and Concat

    The output shows that Concat() method just combine two enumerable collection to single one but doesn't perform any operation/ process any element just return single enumerable collection with all element of two enumerable collections.

    Union() method return the enumerable collection by eliminating the duplicate i.e just return single element if the same element exists in both enumerable collection on which union is performed.

    Important point to Note

    • By this fact we can say that Concat() is faster than Union() because it doesn't do any processing.

    • But if after combining two collection using Concat() having single collection with too many number of duplicate element and if you want to perform further operation on that created collection takes longer time than collection created using Union() method, because Union() eliminate duplicate and create collection with less elements.

    0 讨论(0)
  • 2020-12-06 02:52

    In order to get the expected property names on the anonymous type you probably want to do something like:

    new { x.date, TotalUsage = x.total_usage_T1, UsageType="T1" }
    

    and also

    new { x.date, TotalUsage = x.total_usage_T2, UsageType="T2" }
    
    0 讨论(0)
  • 2020-12-06 03:00

    Use this:

    var result = entity.TblSayacOkumalari 
                       .Select(x => new  
                       { 
                           Date = x.date, 
                           TotalUsage = x.total_usage_T1,
                           UsageType = "T1"
                       }) 
                       .Union(entity.TblSayacOkumalari.Select(x => new  
                       { 
                           Date = x.date, 
                           TotalUsage = x.total_usage_T2,
                           UsageType = "T2"
                       })); 
    
    0 讨论(0)
提交回复
热议问题