将对象存储为集合中的项目

时间:2014-03-14 19:54:48

标签: c#

如果我有2个收藏品可供使用,我想跟踪它们,最好的方法是什么?

BusinessObject1可以有Int32个ID,例如1,2,3,4,5 BusinessObject2可以有String个ID,例如"测试1","测试2","测试3"

我希望能够在使用它们时保留这些对象的列表,并循环遍历它们以检查它们是否存在于集合中。所以一个现实的场景可能是这样的:

项目1:1,"测试1" 项目2:2,"测试1" 项目3:2,"测试2" 项目4:3,"测试2"

我不能使用字典,因为密钥必须是唯一的。这是一种多对多的关系。

你们有什么想法?

3 个答案:

答案 0 :(得分:3)

您可以拥有元组列表

List<Tuple<int, string>> myCollection = new List<Tuple<int, string>>()
{
    {1, "Test 1"},
    {1, "Test 1"},
    {2, "Test 2"},
    {3, "Test 2"}
};

修改:添加示例迭代

foreach(var tuple in myCollection)
{
    Console.WriteLine("{0}: {1}", tuple.Item1, tuple.Item2);
}

修改:添加了Linq示例

这将为您提供所有具有伪密钥1

的元组的列表
var ones = myCollection.Where(tuple => tuple.Item1 == 1).ToList();

答案 1 :(得分:0)

为什么不使用LINQ?

IEnumerable<BusinessObject1> businessObjects = ...;

if (businessObjects.Any(arg => arg.Id == 1))
{
    ...
}

答案 2 :(得分:0)

如果你想在同一个列表中存储两种类型,你可以做这样的事情,使用List你可以改变&#34; object&#34;成为您可能正在使用的常见基础对象。

http://dotnetfiddle.net/a3lEx4