在控制台 windows 和 XML 文件上生成 XML 类型输出的 LINQ 查询
LINQ query to generate XML type output on console windows and XML file
我是编程新手,仍在学习,在 LINQ 上工作我创建了一个非常小的代码,以批处理的形式将一个 int 数组分组,我正在使用的 LINQ 查询显示一个简单的输出,这不是我的要求,我希望使用 LINQ 查询在 CONSOLE WINDOWS 上得到以下输出,请帮助我。
控制台输出Window
<Results>
<Result>
<Marks>60</Marks>
<Marks>50</Marks>
<Marks>70</Marks>
<Total>180</Total>
</Result>
<Result>
<Marks>30</Marks>
<Marks>80</Marks>
<Marks>65</Marks>
<Total>175</Total>
</Result>
<Result>
<Marks>90</Marks>
<Marks>75</Marks>
<Marks>55</Marks>
<Total>220</Total>
</Result>
我的密码是
static void Main(string[] args)
{
List<int> email = new List<int>() { 60, 50, 70, 30, 80, 65, 90, 75, 55 };
foreach (var batch in email.Batch(3))
{
Console.WriteLine(String.Join(",", batch));
}
Console.ReadLine();
}
LINQ 查询
public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> items,
int maxItems)
{
return items.Select((item, inx) => new { item, inx })
.GroupBy(x => x.inx / maxItems)
.Select(g => g.Select(x => x.item));
}
是的,LINQ to XML 使这变得非常简单 - 您可以将元素(包括元素序列)传递到 XElement
构造函数中,并且它们以嵌套方式包含:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Xml.Linq;
static class Extensions
{
public static IEnumerable<IEnumerable<T>> Batch<T>(
this IEnumerable<T> items, int maxItems) =>
items.Select((item, inx) => new { item, inx })
.GroupBy(x => x.inx / maxItems)
.Select(g => g.Select(x => x.item));
}
class Program
{
static void Main(string[] args)
{
List<int> email = new List<int>() { 60, 50, 70, 30, 80, 65, 90, 75, 55 };
var element = new XElement("Results",
email.Batch(3)
// Each batch creates a new Result element
.Select(batch =>
new XElement("Result",
// Each element of the batch creates a Mark
batch.Select(mark => new XElement("Mark", mark)),
// The batch also has a Total element
new XElement("Total", batch.Sum()))));
Console.WriteLine(element);
}
}
我是编程新手,仍在学习,在 LINQ 上工作我创建了一个非常小的代码,以批处理的形式将一个 int 数组分组,我正在使用的 LINQ 查询显示一个简单的输出,这不是我的要求,我希望使用 LINQ 查询在 CONSOLE WINDOWS 上得到以下输出,请帮助我。
控制台输出Window
<Results>
<Result>
<Marks>60</Marks>
<Marks>50</Marks>
<Marks>70</Marks>
<Total>180</Total>
</Result>
<Result>
<Marks>30</Marks>
<Marks>80</Marks>
<Marks>65</Marks>
<Total>175</Total>
</Result>
<Result>
<Marks>90</Marks>
<Marks>75</Marks>
<Marks>55</Marks>
<Total>220</Total>
</Result>
我的密码是
static void Main(string[] args)
{
List<int> email = new List<int>() { 60, 50, 70, 30, 80, 65, 90, 75, 55 };
foreach (var batch in email.Batch(3))
{
Console.WriteLine(String.Join(",", batch));
}
Console.ReadLine();
}
LINQ 查询
public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> items,
int maxItems)
{
return items.Select((item, inx) => new { item, inx })
.GroupBy(x => x.inx / maxItems)
.Select(g => g.Select(x => x.item));
}
是的,LINQ to XML 使这变得非常简单 - 您可以将元素(包括元素序列)传递到 XElement
构造函数中,并且它们以嵌套方式包含:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Xml.Linq;
static class Extensions
{
public static IEnumerable<IEnumerable<T>> Batch<T>(
this IEnumerable<T> items, int maxItems) =>
items.Select((item, inx) => new { item, inx })
.GroupBy(x => x.inx / maxItems)
.Select(g => g.Select(x => x.item));
}
class Program
{
static void Main(string[] args)
{
List<int> email = new List<int>() { 60, 50, 70, 30, 80, 65, 90, 75, 55 };
var element = new XElement("Results",
email.Batch(3)
// Each batch creates a new Result element
.Select(batch =>
new XElement("Result",
// Each element of the batch creates a Mark
batch.Select(mark => new XElement("Mark", mark)),
// The batch also has a Total element
new XElement("Total", batch.Sum()))));
Console.WriteLine(element);
}
}