-1

我试图在对象列表中找到原始类型的代码并将结果放入一个新列表中。

我一直在谷歌中寻找类似的东西,但每个人都在谈论列表之间的交集,我想要这样的东西。

            int AssocCode = 2;
            //Entity.ID
            //Entity.Name
            //Entity.AssociationCode
            List<Entity> list = new List<Entity>();
            list.Add(new Entity(1, "A", 1));
            list.Add(new Entity(2, "B", 2));
            list.Add(new Entity(3, "C", 3));
            list.Add(new Entity(4, "D", 2));
            list.Add(new Entity(5, "E", 2));

            /*I want the results for finding that code inside the collection**/
            List<Entity> newList = list .... find/intersect/select/remove/whatever (x => x.AssociationCode = AssocCode);
4

3 回答 3

4
int associationCode = 1;

List<Entity> newList = list.Where(e => e.AssociationCode == associationCode).ToList();

值得一提的是,只有ToList()在您需要立即获得结果时才应该打电话。

如果您不需要立即获得结果,这会更好。

IQueryable<Entity> entities = list.Where(e => e.AssociationCode == associationCode);

然后,您可以在不访问数据库的情况下进一步过滤。

于 2013-07-04T18:07:12.687 回答
0

我在 1 分钟前解决了我的问题。像这样工作。

            List<Entity> newList =list.FindAll(item => item.AssociationCode == associationCode)

但是现在我看到了您的答案 PeteGO 并且我进行了测试,它也可以工作,但最后您是新添加的 .ToList()

现在我有点困惑。这2个有什么区别。

            fullList = this.FullList.FindAll(item => item.AccCompanyID == CompanyCode);
            vs
            fullList = this.FullList.Where(item => item.AccCompanyID == CompanyCode).ToList();
于 2013-07-04T18:13:57.047 回答
0

这应该这样做:

var newList = list.Where(e => e.AssociationCode == AssocCode).ToList()
于 2013-07-04T18:08:16.643 回答