将对象存储为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"
我不能使用字典,因为键必须是唯一的。这是一个多对多关系。
你们觉得怎么样?
你可以有一个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))
{
...
}