筛选列表中重复的(按整数)项<;元组<;int、Image>&燃气轮机;并创建一本词典<;int,List<;图像>&燃气轮机;C#

筛选列表中重复的(按整数)项<;元组<;int、Image>&燃气轮机;并创建一本词典<;int,List<;图像>&燃气轮机;C#,c#,linq,list,dictionary,C#,Linq,List,Dictionary,我有一个元组列表,每个元组有一个整数和一个图像,列表中有几个具有相同整数值的项,但图像不同,所以我想在列表中获取具有相同整数的项,然后从列表中相应的项创建一个图像列表 例如,假设我有3张图像 imageL1_1和imageL1_2在同一个整数1 imageL2_1在列表中,值为2 Image imageL1_1 = new Image(); imageL1_1.Source = new BitmapImage(new Uri("Resources/image1.png", UriKind.Rel

我有一个元组列表,每个元组有一个整数和一个图像,列表中有几个具有相同整数值的项,但图像不同,所以我想在列表中获取具有相同整数的项,然后从列表中相应的项创建一个图像列表

例如,假设我有3张图像

imageL1_1imageL1_2在同一个整数1

imageL2_1在列表中,值为2

Image imageL1_1 = new Image();
imageL1_1.Source = new BitmapImage(new Uri("Resources/image1.png", UriKind.Relative));
Image imageL1_2 = new Image();
imageL1_2.Source = new BitmapImage(new Uri("Resources/image2.png", UriKind.Relative));
Image imageL2_1 = new Image();
imageL2_1.Source = new BitmapImage(new Uri("Resources/image3.png", UriKind.Relative));
List<Tuple<int,Image>> source = new List<Tuple<int,Image>>();
source.Add(new Tuple<int,Image>(1,imageL1_1 ));
source.Add(new Tuple<int,Image>(1,imageL1_2));
source.Add(new Tuple<int,Image>(2,imageL2_1 ));
Image imageL1_1=新图像();
imageL1_1.Source=新的位图图像(新Uri(“Resources/image1.png”,UriKind.Relative));
图像imageL1_2=新图像();
imageL1_2.Source=新的位图图像(新Uri(“Resources/image2.png”,UriKind.Relative));
Image imageL2_1=新图像();
imageL2_1.Source=新的位图图像(新Uri(“Resources/image3.png”,UriKind.Relative));
列表源=新列表();
添加(新元组(1,imageL1_1));
添加(新元组(1,imageL1_2));
添加(新元组(2,imageL2_1));
我想筛选这些项并创建一个字典,如下所示:

List<Image> l1 = new List<Image>();
 l1.Add(imageL1_1);
 l1.Add(imageL1_2);

List<Image> l2 = new List<Image>();
l2.Add(imageL2_1);

Dictionary<int, List<Image>> dictImages = new Dictionary<int, List<Image>>()
{
     {1, l1},
     {2, l2}
};
List l1=新列表();
l1.添加(图像l1_1);
l1.添加(图像l1_2);
列表l2=新列表();
l2.添加(图像l2_1);
Dictionary dictImages=新字典()
{
{1,l1},
{2,l2}
};
我试着:

Dictionary<int, List<Image>> result = new Dictionary<int, List<Image>>();
List<Image> listIm = new List<Image>();
foreach (Tuple<int, Image> diff in temp)
{

   //How should I save items until key is different?? 
   if(someCondition)
   {
      listIm.Add(diff.Item2);     //save item on temp list
   } 
   else
   {
      result.Add(diff.Item1, listIm); //save result on Dictionary 
      listIm.Clear();                 //clean list 
    }
}
字典结果=新建字典();
List listIm=新列表();
foreach(温度中的元组差异)
{
//我应该如何保存项目直到键不同??
如果(某些条件)
{
listIm.Add(diff.Item2);//保存临时列表上的项目
} 
其他的
{
result.Add(diff.Item1,listIm);//将结果保存到字典中
listIm.Clear();//清除列表
}
}
我很难找出保存列表中的项目或保存字典中的元素的条件,如何解决它

是否可以使用
LINQ

试试这个

Dictionary<int, List<Image>> result = 
    source.GroupBy(tuple => tuple.Item1, tuple => tuple.Item2)
        .ToDictionary(grouping => grouping.Key, grouping => new List<Image>(grouping));
字典结果=
GroupBy(tuple=>tuple.Item1,tuple=>tuple.Item2)
.ToDictionary(grouping=>grouping.Key,grouping=>newlist(grouping));
基本上,这会按照给定的键(
tuple.Item1
)对
source
中的项目列表进行分组,然后将分组转换为
字典

Dictionary<int, List<Image>> result = 
    source.GroupBy(tuple => tuple.Item1, tuple => tuple.Item2)
        .ToDictionary(grouping => grouping.Key, grouping => new List<Image>(grouping));
字典结果=
GroupBy(tuple=>tuple.Item1,tuple=>tuple.Item2)
.ToDictionary(grouping=>grouping.Key,grouping=>newlist(grouping));

基本上,这会根据给定的键(
tuple.Item1
)对
source
中的项目列表进行分组,然后将分组转换为
字典

有趣的解决方案,因此分组包含所有具有分组的相同键的图像,对吗?有趣的解决方案,所以分组包含所有具有分组的相同键的图像,对吗?