1: Error 2 'System.Array' does not contain a definition for 'Split' and no extension method 'Split' accepting a first argument of type 'System.Array' could be found
på denne her: foreach (var kalenderdata in myArray.Split('\t').Select(s => new { Date = new DateTime(s[0]), Name = s[1], Subject = s[2]}).OrderBy(item => item.Date))
Her er min using: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.IO; using System.Windows.Forms; using System.Drawing.Imaging; using System.Linq;
hvordan printer jeg så hele indholdet i graphic.DrawString(kalenderDataToPrint, new Font("Arial", 18), new SolidBrush(Color.White), new PointF(5.0f, 35.0f));
?
ser ud til den heller ikke kan li det dato format der er i min text fil, det ser sådan her ud : 14-10-2011 10:00:00
kan man bruge string format til at lave det til noget det kan li ? "String was not recognized as a valid DateTime."
Ja. Så vil jeg gå tilbage til mit første eksempel og sætte et lille tjek ind, så du er sikker på, at en linie ikke er tom. Jeg ved ikke om Linq-metoden kan skrives, så den undlader tomme linier, men jeg tvivler.
TextReader sr = new StreamReader(@"textfile1.txt", Encoding.GetEncoding("iso-8859-1")); string contents = sr.ReadToEnd();
jeg takker for hjælpen, ser ud til det virker som det skal nu.(måtte dog lave lidt om, så jeg brugte stringbuilder til at lave en stor string med hele resultatet i) Smid et svar :)
Mærkeligt, jeg har ikke fået nogen notifikation om nye indlæg i denne tråd, så jeg har slet ikke lige set hvad der var kommet. Og ja, den her gang har jeg så taget mig tiden, rent faktisk at få tjekket syntaksen, det andet var lige hurtigt nok lavet. :)
Nedenstående skulle gerne virke, forudsat at kalenderformatet kan genkendes. De tomme linjer fjernes også.
System.IO.TextReader sr = new System.IO.StreamReader(@"C:/Temp/Kalender.txt", System.Text.Encoding.GetEncoding("iso-8859-1"));
var strongTypedLines = lines .Select(s => s.Split('\t')) .Select(s => new { Date = System.DateTime.Parse(s[0]), Name = s[1], Subject = s[2] });
foreach (var kalenderdata in strongTypedLines.OrderBy(item => item.Date)) { var kalenderDataToPrint = string.Format("{0} - {1} - {2}", kalenderdata.Date, kalenderdata.Name, kalenderdata.Subject);
graphic.DrawString(kalenderDataToPrint , new System.Drawing.Font("Arial", 18), new System.Drawing.SolidBrush(System.Drawing.Color.White), new System.Drawing.PointF(5.0f, 35.0f)); }
I følgende linje: minstreng.Append(string.Format("{0} - {1} - {2}", kalenderdata.Date, kalenderdata.Name, kalenderdata.Subject));
er det bare "{0} - {1} - {2}" du skal erstatte med hvad du gerne vil have i stedet. {0} (til 2) er placeholders for de 3 argumenter der kommer efterfølgende. Men vil du gerne have en newline på, kan du også bare skrive følgende:
I forhold til denne kommentar: "jeg takker for hjælpen, ser ud til det virker som det skal nu.(måtte dog lave lidt om, så jeg brugte stringbuilder til at lave en stor string med hele resultatet i) Smid et svar :)"
Har du så 2 fungerende løsninger nu? :) For i så fald synes jeg da kun det er rimeligt at vi deler point'ene.
så virker den løsning også. :) Det jeg laver med at lave en linje om til typestærke objekter har ikke noget at gøre med at håndtere tomme linjer, men det bliver gjort i ovenstående kode.
Din kommentar om at det virkede og at han skulle smide et svar, kom bare samtidig med at jeg skrev min anden kommentar, for i så fald, kunne jeg bare have foreslået ovenstående rettelse. :)
Men her har du mit svar.
@sherlock: Ang. det med at kunne sortere tomme linjer fra med LINQ, så er det faktisk ret let. Har du et array af strings (MyArray), er koden blot: MyArray.Where(s => !System.String.IsNullOrWhiteSpace(s));
(alternativt 's != ""' el. 's != System.String.Empty' hvis man bedre kan lide den syntaks)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.