从c#中的对象列表中删除某些对象

时间:2017-11-15 09:27:07

标签: c# asp.net

我有一个对象列表

    public int id { get; set; }
    public string device_code { get; set; }
    public string device_type { get; set; }
    public string authentication_token { get; set; }
    public string Status { get; set; }

在返回列表时我想删除" device_code"和" device_type"从列表中返回列表仅使用" id"," authentication_token"和"状态"。 如何删除某些对象?

4 个答案:

答案 0 :(得分:0)

很简单,创建另一个包含所需属性的类,然后使用您创建的列表返回其对象。

  

原始班级

public class Data {
    public int id { get; set; }
    public string device_code { get; set; }
    public string device_type { get; set; }
    public string authentication_token { get; set; }
    public string Status { get; set; }
}
  

将返回的课程

public class DataTobeReturned {
    public int id { get; set; }
    public string authentication_token { get; set; }
    public string Status { get; set; }
}

假设您有

之类的列表
List<Data> list = // some data;

你可以做到

List<DataTobeReturned> list2 = list.Select(x => new DataTobeReturned { x.id, x.Status, x.authentication_token}).ToList();

只需返回list2对象。

答案 1 :(得分:0)

您必须将对象转换为仅包含所需属性的另一种类型。 你可以用linq轻松完成这个:

var result = yourCollection.Select(x => new YourTempClass(){property1=x.property1});

答案 2 :(得分:0)

您似乎不想删除对象,而是删除对象的属性。

public class ClassWithAllProperties
{
    public int id { get; set; }
    public string device_code { get; set; }
    public string device_type { get; set; }
    public string authentication_token { get; set; }
    public string Status { get; set; }
}

var allInstances = new List<ClassWithAllProperties>();

// populate list

var allInstancesButNotAllProperties = allInstances.Select(x => new { id = x.id, authentication_token = x.authentication_token, Status = x.Status }).ToList();

现在此列表仅包含您想要的属性。 然而显然包含ClassWithAllProperties的实例。它包含所谓的匿名类。根据{{​​1}}。

中的描述,编译器为您在后台构建的类

答案 3 :(得分:0)

如果你有这门课程:

class MyClass
{
    public int id { get; set; }
    public string device_code { get; set; }
    public string device_type { get; set; }
    public string authentication_token { get; set; }
    public string Status { get; set; }
}

......你有一份清单......

List<MyClass> list;

您可以使用LINQ:

将您想要的属性提取为匿名类型
var justWhatIWant = list.Select( a => new 
{
    id = a.id,
    authentication_token = a.authentication_token,
    Status = a.Status
});

匿名类型与任何东西都没有接口兼容,但您可以使用它来创建一些JSON。