如何从列表中删除特定字段

4

类的结构

 public class EmployeeDetails
 {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Exp { get; set; }
 }

员工详情列表

Id Name       Exp
-- ---------  --------
1  Bill       2 years
2  John       5 years
3  Doug       1 years

我想要从列表对象中删除一个字段,比如Id,就像下面的输出结果一样。

Name       Exp
---------  --------
Bill       2 years
John       5 years
Doug       1 years

有人有想法怎么做吗?
和我分享一下
谢谢

4个回答

14

你可以尝试:

var listWithoutCol = List.Select(x => new { x.Name , x.Exp}).ToList();

这将返回一个仅包含字段 NameExp 信息的列表...


当我们创建列表对象时,是否可以这样做:List<EmployeeDetails>= new List<EmployeeDetails> - Pradip Talaviya
我不理解你在评论中的问题。请提供更多细节。 - XardasLord
嗨@XardasLord, 当我们初始化List<>时,是否可以同时删除特定字段? - Pradip Talaviya
这个选择能否在方法中重复使用?我需要在多种情况下使用这样的过滤器。我找了一些资料,但是还没有找到... - IvanF.

1
如果您希望新列表具有具体类型对象而不是匿名对象,您可以定义自己的相应类而无需使用ID:
public class EmployeeDetailsDTO
{
    public string Name { get; set; }
    public string Exp { get; set; }
}

并使用Select作为:

var listWithoutIDs = List.Select(x => new EmployeeDetailsDTO{ Name = x.Name , Exp = x.Exp}).ToList();

0
var employeeDetails = new List<EmployeDetails> { Id=1, Name="Peter", Exp="Two years" };   
var listWithoutId = employeeDetails.Select(x => new { x.Name, x.Exp}).ToList();

0
你可以使用JsonIgnore。
 public class EmployeeDetails
 {
        [JsonIgnore]
        public int Id { get; set; }
        public string Name { get; set; }
        public string Exp { get; set; }
 }

值得一提的是,JsonIgnore 引用了 Newtonsoft.Json 库,仅适用于序列化场景。 - Zephyr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接