Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与泛型集合不同的类型_C#_Linq_List - Fatal编程技术网

C# 与泛型集合不同的类型

C# 与泛型集合不同的类型,c#,linq,list,C#,Linq,List,我有一张物品清单 List<Animals> animals 或 //EqualityComparer是IEqualityComparer的通用实现 列表类型 =animals.Distinct(新的EqualityComparer((a,b)=>a.GetType()==b.GetType()); 但是我在编译这两个代码时遇到了麻烦。为什么选择many?标准选择应执行以下操作: List<Type> types = animals.Select(x => x.

我有一张物品清单

List<Animals> animals

//EqualityComparer是IEqualityComparer的通用实现
列表类型
=animals.Distinct(新的EqualityComparer((a,b)=>a.GetType()==b.GetType());

但是我在编译这两个代码时遇到了麻烦。

为什么
选择many
?标准
选择
应执行以下操作:

List<Type> types = animals.Select(x => x.GetType()).Distinct();
List types=animals.Select(x=>x.GetType()).Distinct();

为什么
选择多个
?标准
选择
应执行以下操作:

List<Type> types = animals.Select(x => x.GetType()).Distinct();
List types=animals.Select(x=>x.GetType()).Distinct();

如果列表中的任何列表只包含键类型的元素,那么使用
字典怎么样

var typeSpecficGroups = animals.GroupBy(animal => animal.GetType());
var dictOfTypes = typeSpecficGroups.ToDictionary(group => group.Key, group => group.ToList());
现在,你可以询问字典是否有特定的动物,并获得相应的动物列表。缺点是必须将列表中的每个元素强制转换为具体类型:

List<Animal> matchingList;

if (dictOfTypes.TryGetValue(typeof(Dog), out matchingList))
{
    var dogs = matchingList.Cast<Dog>();

    foreach (var dog in dogs)
    {
        dog.FindBone();
    }
}
列表匹配列表;
if(dictOfTypes.TryGetValue(typeof(Dog),out matchingList))
{
var dogs=matchingList.Cast();
foreach(狗中的狗)
{
dog.FindBone();
}
}

如果列表中的任何列表只包含键类型的元素,那么使用
字典怎么样

var typeSpecficGroups = animals.GroupBy(animal => animal.GetType());
var dictOfTypes = typeSpecficGroups.ToDictionary(group => group.Key, group => group.ToList());
现在,你可以询问字典是否有特定的动物,并获得相应的动物列表。缺点是必须将列表中的每个元素强制转换为具体类型:

List<Animal> matchingList;

if (dictOfTypes.TryGetValue(typeof(Dog), out matchingList))
{
    var dogs = matchingList.Cast<Dog>();

    foreach (var dog in dogs)
    {
        dog.FindBone();
    }
}
列表匹配列表;
if(dictOfTypes.TryGetValue(typeof(Dog),out matchingList))
{
var dogs=matchingList.Cast();
foreach(狗中的狗)
{
dog.FindBone();
}
}

你能解释一下“这种想法”吗?恐怕这个伪代码还不够。你能试着解释一下“这种想法”吗?恐怕这个伪代码还不够。它需要:
.ToList()
但是这个工作非常好,谢谢。它需要:
.ToList()
但是这个工作非常好,谢谢。