我有一个正确填充的List,但是在填充之后我想以简单的方式删除所有具有空值的键,如果存在,则类似:
posts.RemoveAll(item => item == null);
我在此列表中有多个帖子<> 对我来说,问题是找到要在字典中访问的键/值。
有人知道这样做的方法吗?
更新:
我的班级看起来像这样:
public class iPost
{
public int id { get; set; }
public int post_origin_post_id { get; set; }
public int pid { get; set; }
public int container_type_id { get; set; }
public int post_member_id { get; set; }
public int post_toGroup_id { get; set; }
public string title { get; set; }
public string comment { get; set; }
public string latitude { get; set; }
public string longitude { get; set; }
public string post_ip { get; set; }
public bool canShared { get; set; }
public bool isShared { get; set; }
public int share_type_id { get; set; }
public int views { get; set; }
答案 0 :(得分:0)
你的钥匙在哪里? c#-List没有键。
你的意思是这样吗:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DemoApp
{
class Program
{
static void Main(string[] args)
{
List<DemoClass> list = new List<DemoClass>();
list.Add(new DemoClass() { Key = "A1" });
list.Add(new DemoClass() { Key = "A2" });
list.Add(new DemoClass() { Key = "A3" });
// Print
foreach (var it in list) { Console.WriteLine(it.Key); }
Console.WriteLine();
// set one key to null
list[1].Key = null;
list.RemoveAll(Item => Item.IsToDelete());
// Print
foreach (var it in list) { Console.WriteLine(it.Key); }
Console.WriteLine("As you can see, A2 is missing");
Console.ReadLine();
}
}
class DemoClass
{
public string Key
{
get;
set;
}
public object SomeValue
{
get;
set;
}
public bool IsToDelete()
{
if(Key == null || SomeValue == null)
{
return true;
}
return false;
}
}
}
修改强> 您可以编写一个自己的属性,该属性放在所有未被赋予null的成员上。您可以编写一个读取此信息的类,而不是决定是否要从列表中删除您的实例。 Absract示例:
[ProofForNull]
public string Key
{
get;
set;
}
[ProofForNull]
public string Value1
{
get;
set;
}
[ProofForNull]
public string Value2
{
get;
set;
}
比你更改 IsToDelete()。如果它们具有[ProofForNull]属性,它必须通过反射和证明获得所有成员。如果具有该属性的一个成员为null,则 IsToDelete()将返回true。 使用这种方法,您需要完成一项初始工作,但是您的类的实现要容易得多。