c#使用linq把多列的List转化为只有指定列的List

想要使用LINQ将多列的列表转化为只有指定列的列表,可以按照以下步骤进行操作:

  1. 首先创建一个包含多列数据的列表,可以使用下面的代码创建一个实例用于演示:
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 }
};
  1. 接着,定义一个新的列表,用于存储我们指定的列,例如下面代码中我们只需要ID和Name两列数据:
var subset = persons.Select(p => new PersonViewModel { Id = p.Id, Name = p.Name }).ToList();

在上面的代码中,我们使用了Select方法来筛选出需要的两列数据,并将它们转化为 PersonViewModel 类型,然后将其转换为一个新的列表。

  1. 最后,我们可以根据需要输出存储有指定列数据的列表,例如下面的代码将使用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技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#基础之泛型

    C#基础之泛型 什么是泛型 在C#中,泛型即“参数化类型”,即对数据类型进行参数化,使得能够在类型安全的前提下对不同的数据类型进行通用的操作。用一句话来概括就是,泛型即类型参数化。 泛型具有以下特点: 可以避免类型强转的问题。 提供更高效的代码复用,避免了针对不同类型创建不同版本的代码的问题。 增加代码可读性,因为泛型可以让我们不需要在代码中反复使用Obje…

    C# 2023年5月14日
    00
  • C#使用Lambda表达式简化代码的示例详解

    这里是C#使用Lambda表达式简化代码的示例详解。 Lambda表达式简介 Lambda表达式是C# 3.0 中引入的一种新的语法特性,广泛用于简化代码,特别是在LINQ查询和事件处理中。Lambda表达式可以看作是一种匿名函数,它不需要方法名,可以在其他方法中定义,非常方便。Lambda表达式的语法形式为: (parameters) => expr…

    C# 2023年5月31日
    00
  • C#操作SQLite数据库帮助类详解

    C#操作SQLite数据库帮助类详解 什么是SQLite数据库? SQLite是一种轻量级的关系型数据库管理系统,因其跨平台、易操作、高效等特点广受欢迎,可用于很多不同的应用场景。 C#如何操作SQLite数据库? C#作为一种高效的编程语言,内置了SQLite.NET库,可以直接通过System.Data.SQLite命名空间中的类进行对SQLite数据库…

    C# 2023年5月31日
    00
  • 在C#项目中如何使用NHibernate详解

    在C#项目中使用NHibernate需要注意以下几个步骤: 1.安装NHibernate 可以通过NuGet包管理器来安装NHibernate,在Visual Studio中右键点击项目 -> “管理NuGet程序包”。在搜索框中输入”NHibernate”,选择安装即可。 2.配置NHibernate NHibernate的配置需要在App.conf…

    C# 2023年5月31日
    00
  • c#使用wmi查询usb设备信息示例

    下面我将为您详细讲解如何使用c#和wmi查询usb设备信息: 1. 什么是WMI? WMI即Windows Management Instrumentation(Windows管理规范),是微软在Windows NT 4.0中推出的一个系统管理标准。它提供了一种机制,用于通过应用程序编程接口(API)收集有关计算机系统硬件、软件甚至网络服务的信息。我们可以通…

    C# 2023年6月3日
    00
  • c#中的interface abstract与virtual介绍

    针对“c#中的interface abstract与virtual介绍”的问题,我将会给出详细的解答。 一、介绍 在 C# 中,我们常常会用到 interface、abstract 和 virtual 这三个关键字。它们在面向对象的编程中,起到了非常重要的作用。 1.1 interface interface 是一种特殊的类,它只能包含成员的声明,而不提供任…

    C# 2023年5月31日
    00
  • System.Data.OleDb.OleDbException: 未指定的错误的完美解决方法

    System.Data.OleDb.OleDbException: 未指定的错误 对于这个错误,一般是由于OleDbDataAdapter执行Fill方法时出现了某种异常。它可能是由于以下原因之一: SQL查询或其他数据库操作语句有语法错误。 数据库中的表或字段不存在。 数据类型不匹配。 数据库连接出现问题或者权限不足。 针对这种类型的错误,我们可以采取如下…

    C# 2023年5月15日
    00
  • c#进程之间对象传递方法

    C#中进程间对象传递有多种方式,其中常用的有以下几种: 1. 使用序列化 一种可行的方式是使用序列化将对象转化为二进制并传递到目标进程,再反序列化还原为对象。这个过程需要满足对象继承了Serializable接口并在对象中定义了序列化方法(例如,实现ISerializable接口)。 下面是示例代码: 定义一个包含序列化方法的类: [Serializable…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部