将对象存储为Collection中的Item

本文关键字:中的 Item Collection 对象 存储 | 更新日期: 2023-09-27 17:50:30

如果我有两个集合要运行,我想跟踪它们,最好的方法是什么?

BusinessObject1可以有如下的Int32 id: 1、2、3、4、5BusinessObject2可以有String id,例如"Test 1","Test 2","Test 3"

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

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

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

你们觉得怎么样?

将对象存储为Collection中的Item

你可以有一个List of Tuples

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

Edit:添加示例迭代

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

Edit:添加Linq示例

这将得到一个包含所有伪键为1

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

如果你想在同一个列表中存储两种类型,你可以这样做,使用list,你可以将"object"更改为你可能使用的公共基对象。

http://dotnetfiddle.net/a3lEx4

为什么不用LINQ呢?

IEnumerable<BusinessObject1> businessObjects = ...;
if (businessObjects.Any(arg => arg.Id == 1))
{
    ...
}