我想在 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