您的位置:首页 > 编程语言 > C#

C# List Remove 注意事项

2016-04-08 10:40 507 查看
项目的GitHub地址

  

尝试用的删除方式

  以下代码应该输出什么呢?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestCollectionDelete
{
class Program
{
static void Main(string[] args)
{
List<UserInfo> listUserInfo = new List<UserInfo>() { new UserInfo { ID = 1, Name = "A" }, new UserInfo { ID = 2, Name = "B" } };  //实例化集合
UserInfo user = new UserInfo();   //new实体
user.ID = 1;
user.Name = "A";
listUserInfo.Remove(user);   //从集合中删除实体
foreach (UserInfo item in listUserInfo)
{
Console.WriteLine("ID:" + item.ID + " Name:" + item.Name);
}
Console.ReadKey();
}
}
class UserInfo
{
public int ID { get; set; }
public string Name { get; set; }
}
}


  输出结果:



建议方式

  是的,并没有从集合中删除A实体。如果要使用集合的Remove删除实体应该采用如下写法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestCollectionDelete
{
class Program
{
static void Main(string[] args)
{
List<UserInfo> listUserInfo = new List<UserInfo>() { new UserInfo { ID = 1, Name = "A" }, new UserInfo { ID = 2, Name = "B" } };  //实例化集合
listUserInfo.Remove(listUserInfo.Where(p => p.ID == 1).FirstOrDefault());   //从集合中删除实体
foreach (UserInfo item in listUserInfo)
{
Console.WriteLine("ID:" + item.ID + " Name:" + item.Name);
}
Console.ReadKey();
}
}
class UserInfo
{
public int ID { get; set; }
public string Name { get; set; }
}
}


  结果:



结论

  即使属性相同的两个实体,在集合中也不会认为是同一个对象,因此从实体集合中,删除元素还是建议使用Linq来删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: