检查List <Guid>和List <Dictionary <string,object >>之间的差异

我试图弄清楚如何检查列表中是否有字典或像Guid这样的单一值。 尝试过使用Type,但仅定义Array或Object,有人有什么建议吗?

 JArray P = R as JArray;
 try
 {
     JTokenType Type = P.Type;
     Result = P.ToObject<List<Dictionary<string,object>>>();
 }
 catch (Exception e)
 {

 }

又快又脏,我本想捕捉错误的,但视野不好。

似乎信息不正确,对象是

 List<Someclass>

 List<Guid> 

示例数据:

 [
   {
      "Id": "45c41ef8-a030-4480-820d-5bd6bf02bf14","UserId": "246fef1a-e85e-49be-9aad-7d32c8144580","Type": 351208,"Name": "*******il.com","isDirect": true,"active": true,"History": []
   }
 ]

 ["b0d2dd7d-018c-43ad-9c70-8ec9a3f41978"]
huaping1207 回答:检查List <Guid>和List <Dictionary <string,object >>之间的差异

我不确定,但是我认为您想知道如何检查列表是否包含Dictionary。但是由于Dictionary是通用类型,因此如果您要了解Dictionary内容的特定类型,想要使用is

即这是你的问题:

//can't do
if(myList[0] is Dictionary)

//can only do this
if(myList[0] is Dictionary<string,object>)

相反,我们必须执行以下操作:

Type t = myList[0].GetType();
bool isDict = t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Dictionary<,>);

如果您还想知道字典中的类型,请检查t.GetGenericArguments()返回的数组

有关演示,请参见此提琴:https://dotnetfiddle.net/oyyivN

,

如果您要检查单个List<T>,它只是普通的Contains()

由于多种原因,第二种情况比较困难:

  1. 因为您获得了词典的列表。因此,您必须仔细研究List元素,才能找到拥有所需数据或键的东西。
  2. 因为您获得了词典列表。 Wich意味着您必须决定要使用ContainsKey()还是ContainsValue()检查。

如果我们有一些有关这些类型的实际示例,那将有很大帮助。这还不足以给您提供更多的一般指导。

P.S .:请不要在通用类中将object用作类型。它破坏了安全型。实际上,引入了泛型,因此我们最终可以停止使用对象。我们仍然像过去的幽灵一样,在名称空间中散布着那些泛型集合。

本文链接:https://www.f2er.com/3135996.html

大家都在问