Как записать в файл результат запроса - C#
Формулировка задачи:
Добрый день. Подскажите пожалуйста, как записать в файл результат запроса
Однако в записи файла ошибка.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication4
{
public struct Students : IComparable
{
public Students(string Name, int course, int group, int Result)
: this()
{
this.Name = Name;
this.course = course;
this.group = group;
this.Result = Result;
}
public string Name { get; private set; }
public int course { get; private set; }
public int group { get; private set; }
public int Result { get; private set; }
public int CompareTo(object obj) // сортировка
{
Students b = (Students)obj;
if (this.Result == b.Result) return 0;
else if (this.Result < b.Result) return 1;
else return -1;
}
public override string ToString()
{
return string.Format("{0}; {1}; {2}; {3}",
Name, course, group, Result);
}
class Program
{
static void Main(string[] args)
{
string[] allLines = File.ReadAllLines("E://input.txt");
Students[] students = new Students[allLines.Length];
int[] rang = new int[allLines.Length];
for (int i = 0; i < allLines.Length; i++)
{
string line = allLines[i];
string[] fields = line.Split(' ');
Students student = new Students(fields[0], Convert.ToInt32(fields[1]), Convert.ToInt32(fields[2]), Convert.ToInt32(fields[3]));
students[i] = student;
rang[i] = students[i].Result;
}
rang = rang.Distinct().ToArray();
Array.Sort(rang);
Array.Reverse(rang);
int count = rang[2];
foreach (Students a in students)
{
Console.WriteLine(a.ToString());
}
Array.Sort(students);
Console.WriteLine();
Console.WriteLine("сортировка по результату");
var q1 = students.Where(s => s.Result >= count).OrderByDescending(e => e.Result);
foreach (var a in q1)
{
Console.WriteLine(a);
}
File.WriteAllText("E://output.txt", q1);
}
}
}
}Решение задачи: «Как записать в файл результат запроса»
textual
Листинг программы
q1=students.Where(s => s.Result >= count).OrderByDescending(e => e.Result).ToArray();
// иначе запрос выполнится два раза - один в foreach, другой в записи в файл)
//foreach без изменений
File.WriteAllText("E://output.txt", string.Join(", ", q1));