想要使用LINQ将多列的列表转化为只有指定列的列表,可以按照以下步骤进行操作:
- 首先创建一个包含多列数据的列表,可以使用下面的代码创建一个实例用于演示:
List<Person> persons = new List<Person>()
{
new Person() { Id = 1, Name = "Tom", Age = 25 },
new Person() { Id = 2, Name = "Jerry", Age = 26 },
new Person() { Id = 3, Name = "Mike", Age = 27 }
};
- 接着,定义一个新的列表,用于存储我们指定的列,例如下面代码中我们只需要ID和Name两列数据:
var subset = persons.Select(p => new PersonViewModel { Id = p.Id, Name = p.Name }).ToList();
在上面的代码中,我们使用了Select
方法来筛选出需要的两列数据,并将它们转化为 PersonViewModel
类型,然后将其转换为一个新的列表。
- 最后,我们可以根据需要输出存储有指定列数据的列表,例如下面的代码将使用Console输出新列表中的每个元素:
foreach (var item in subset)
{
Console.WriteLine("Id: {0}, Name: {1}", item.Id, item.Name);
}
完整的代码示例如下:
using System;
using System.Collections.Generic;
using System.Linq;
// 定义 Person 类型,用于存储 person 数据
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
// 定义 PersonViewModel 类型,用于存储指定的字段数据
public class PersonViewModel
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Program
{
static void Main(string[] args)
{
// 创建包含多个数据列的列表实例
List<Person> persons = new List<Person>()
{
new Person() { Id = 1, Name = "Tom", Age = 25 },
new Person() { Id = 2, Name = "Jerry", Age = 26 },
new Person() { Id = 3, Name = "Mike", Age = 27 }
};
// 定义 PersonViewModel 列表,只包含需要的 Id 和 Name 两列
var subset = persons.Select(p => new PersonViewModel { Id = p.Id, Name = p.Name }).ToList();
// 输出新的列表中的每个元素
foreach (var item in subset)
{
Console.WriteLine("Id: {0}, Name: {1}", item.Id, item.Name);
}
}
}
上面的代码演示了基本实现机制,如果有需要,可以根据实际情况进行扩展。例如,可以使用Where
方法进行筛选,然后再使用Select
方法选择指定的列进行转换。还可以根据具体需求使用其他LINQ操作,来更灵活的处理列表数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#使用linq把多列的List转化为只有指定列的List - Python技术站