Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Fórum ➡ Convert from one format into another using LINQ ( as much as possible ) ♦
//Rextester.Program.Main is the entry point for your code. Don't change it. //Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.51 // In reply to // Convert row values into columns using LINQ in C# // http://social.msdn.microsoft.com/Forums/WindowsServer/en-us/61385c74-0127-45cd-9ba5-509c65f9f8d7/convert-row-values-into-columns-using-linq-in-c?forum=csharpgeneral using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; // aljodav // http://rextester.com/users/376 namespace Rextester { using T5=Tuple<string,string,string,string,string>; using LT5=List<Tuple<string,string,string,string,string>>; public class Program { public static void Main(string[] args) { string[] lines={ // e.g., string[] lines= File.ReadAllLines(...); "PID,QUARTER,FEATURE", "1,Q1,FRANCE", "1,Q1,GERMANY", "1,Q2,ITALY", "1,Q3,RUSSIA", "2,Q2,INDIA", "2,Q3,USA", "3,Q2,CHINA", "3,Q3,AUSTRALIA", "3,Q3,NEW ZEALAND", "3,Q4,JAPAN", }; // ① LT5 target= new LT5(); T5 header= Tuple.Create("Id","Q1","Q2","Q3","Q4"); // ② lines.Skip(1).ToList().ForEach(s=>{ // ②A string[] values= s.Split(','); string id= values[0].Trim(); string quarter= values[1].Trim().ToUpper(); string feature= values[2].Trim(); // ②B if(false== new[]{"Q1","Q2","Q3","Q4"}.Any(x=>x== quarter)) throw new Exception("‼✖ Invalid quarter ✖‼"); // ②C int i= target .FindIndex(x=>id== x.Item1&&string.Empty==( quarter=="Q1"?x.Item2: quarter=="Q2"?x.Item3: quarter=="Q3"?x.Item4: x.Item5)); // ②D T5 t= Tuple.Create( id, quarter=="Q1"?feature:i==-1?string.Empty:target[i].Item2, quarter=="Q2"?feature:i==-1?string.Empty:target[i].Item3, quarter=="Q3"?feature:i==-1?string.Empty:target[i].Item4, quarter=="Q4"?feature:i==-1?string.Empty:target[i].Item5); // ②E if(i==-1)target.Add(t);else target[i]= t; }); // ③ target.Sort(); // 1st sort, and then target.Insert(0,header); // insert the header target.ForEach(t=>Console.WriteLine( Regex.Replace(Regex.Replace(t.ToString(),@"\(|\)",""),",","\t\t") )); // ‼✖ salutation is not counted ✖‼ Console.WriteLine("\n\nHello, world!"); } } }
run
|
edit
|
history
|
help
0
static, private, public constructor in C#
Reverse String
Fibonacci Recursive C#
EricomQ9
any predicate test
test
Reflekcja assembly, instancja i metoda
test
Min Max Sum Avg
Gradebook