我想在 list<object> 中创建多个对象并使用所需的 id 删除它们
I want to create multiple objects in list<object> and remove them with the desired id
我想用想要的id删除它。
你能告诉我是否有其他方法可以用 Linq 来完成吗?
我想我可以使用 Select() 和 Where(),但它不起作用。
var list = new List<object>() { };
list.Add(new { id = 3, const = "22"});
list.Add(new { id = 4, const = "22"});
list.Add(new { id = 6, const = "22"});
list.Add(new { id = 2, const = "22"});
list.Add(new { id = 1, const = "22"});
//example
list.Remove(new { id = 2, const = "22" });
你可以试试:
list.RemoveAt(list.FindIndex(item => item.id == 1));
首先const
是C#中的关键字,所以要么避免将其用作成员名称,要么通过使用@
.
修饰来转义它
因为您的列表项类型是 object
,您需要将它们转换为 dynamic
以允许访问 'unknown' id
-> 这是一个非常模糊的方法,但它有效。
=
在C#中的意思是:设置...的值所以如果要比较相等,需要==
总而言之:
var list = new List<object>();
list.Add(new { id = 4, @const = "22" });
list.Add(new { id = 4, @const = "22" });
list.Add(new { id = 6, @const = "22" });
list.Add(new { id = 2, @const = "22" });
list.Add(new { id = 1, @const = "22" });
list.RemoveAll(i => ((dynamic)i).id == 2);
会起作用。
考虑为您的列表项使用自己的类型,匿名类型应仅在 'locally' 等查询中使用 GroupBy
。
我想用想要的id删除它。
你能告诉我是否有其他方法可以用 Linq 来完成吗?
我想我可以使用 Select() 和 Where(),但它不起作用。
var list = new List<object>() { };
list.Add(new { id = 3, const = "22"});
list.Add(new { id = 4, const = "22"});
list.Add(new { id = 6, const = "22"});
list.Add(new { id = 2, const = "22"});
list.Add(new { id = 1, const = "22"});
//example
list.Remove(new { id = 2, const = "22" });
你可以试试:
list.RemoveAt(list.FindIndex(item => item.id == 1));
首先const
是C#中的关键字,所以要么避免将其用作成员名称,要么通过使用@
.
因为您的列表项类型是 object
,您需要将它们转换为 dynamic
以允许访问 'unknown' id
-> 这是一个非常模糊的方法,但它有效。
=
在C#中的意思是:设置...的值所以如果要比较相等,需要==
总而言之:
var list = new List<object>();
list.Add(new { id = 4, @const = "22" });
list.Add(new { id = 4, @const = "22" });
list.Add(new { id = 6, @const = "22" });
list.Add(new { id = 2, @const = "22" });
list.Add(new { id = 1, @const = "22" });
list.RemoveAll(i => ((dynamic)i).id == 2);
会起作用。
考虑为您的列表项使用自己的类型,匿名类型应仅在 'locally' 等查询中使用 GroupBy
。