2013-05-16 30 views
0

注意所有列表/ LINQ爱好者,我对你有一个小小的挑战。根据另一个列表中的项目设置列表中的项目的属性

我有两个列表:

List<ObjectInfo> firstListObject; 
List<ObjectInfo> secondListObject; 

第一个列表是,我用它来管理数据的列表。随着过程的继续,我使用第二个列表添加项目。所以,不时,我会在我的列表中添加/删除项目。

我有这些领域:

public int m_ObjectID { get;set; } 
public bool m_IsSelected { get;set; } 

而且我的意图是,每次我“更新”我secondListObject,我需要通过所有的firstListObject滚动设置m_IsSelected值设置为true。 ELSE该值必须是false,这意味着如果一个物品第一次出现在列表中,那么之后将被删除,该物品的m_IsSelected将变为false。

任何人都可以帮我吗?谢谢!

编辑

这是我迄今所做的:

foreach (var singleOrDefault in secondListObject 
    .Select(objectInfo => firstListObject 
     .SingleOrDefault(_item => _item.m_ObjectID == inventoryInfo.m_ObjectID)) 
    .Where(singleOrDefault => singleOrDefault != null)) 
{ 
    singleOrDefault 
     .m_IsSelected = true; 
} 

那么,从某种意义上说,这个工程。它将我正在查找的项目设置为true。默认情况下,所有m_IsSelected值都是错误的。

但是,如果我删除该项目,m_IsSelected仍然是真实的,这就是我需要做的。

所以,在一个句子中:我需要在firstListObject中做一个循环,并检查secondListObject的每个项目是否有“发生”(基于ID)。如果这是真的,我会将m_IsSelected切换为真。我只是需要确保否则m_IsSelected是假的,我不知道该怎么办......

+0

你到目前为止试过了什么?你试图解决这个问题时遇到了什么问题? – Servy

+0

再一次,你的问题不清楚。这些属性是ObjectInfo类的成员,还是他们在其他地方?你能用步骤(1 ... 2 ... 3 ...)表达你的想法吗? –

+0

是的,我很难想象这个问题。 – sircodesalot

回答

0

你可以先设置好一切为false,然后只需设置要真一:

firstListObject.ForEach(o => o.m_IsSelected = false); 
// your foreach goes here 
+0

有趣!我会深入了解这一点。听起来像这可能是一个不错的选择。 – hsim

0

所以这很大程度上取决于你在这之前做了什么。 如果您创建了firsListObject,但根本不修改它。然后,列表中所有对象的o.m_IsSelected将处于“false”状态,因为这是布尔值的默认初始值,除非您将它们设置为不同的值。

然后,您只需要更新必须设置为true的对象。

如果您更新了列表并修改了所选内容以及不需要刷新的内容。然后Kenneth选项很好,那么在初始化所有值之后,您可以再次执行您的代码。

而且你有第三个选项你想要一次更新所有的项目。你可以这样做:

foreach (var item in secondListObject) 
{ 
    item.m_IsSelected = firstListObject.Any(x => x.m_ObjectID == item.m_ObjectID); 
} 
+0

那么,在这一点上,考虑到第一个列表是静态的并且不会改变,只有第二个列表的内容会根据用户可以选择的内容而改变。 – hsim

+0

你的secondListObject呢? firstListObject是否包含系统的所有可能项目?第二个ListObject将总是有一个firstListObject的项目的子集? – Dzyann

+0

firstListObject是我在到达此阶段之前使用的列表。根据搜索参数,我填写所需的数据,因此有时可能包含20个项目,有时575个,等等。但是,当我使用第二个列表时,只要程序没有“重新启动”或重新搜索,第一个列表就保持静态。这是因为如果你看到我的意思,第一个列表是一个“浏览”类别,第二个列表是“使用”类别。 – hsim

相关问题