通过比较两个不同的集合找出值的数据类型

时间:2014-07-21 23:32:33

标签: c# c#-4.0

我有一个集合

IQueryable<Parameters> lstparams是GetparamsforanApp()函数的返回类型。 参数是类类型

public class Parameters
   {
       public string Name { get; set; }

       public string Type { get; set; }

   }

现在有另一个名为 startApp 的函数,其中Dictionary <string,object> paramslst作为i / p参数。

现在在这个startApp函数中我需要比较用户i / p即paramlst和lstparams 即它需要检查用户是否为函数

提供了正确的键值对

这是出于验证目的......

结论: 需要比较paramslst的每个项目,即字典类型和lstparams 比较意味着需要验证密钥和字典中Value的数据类型与GetparamsforanApp()函数返回的Iqueryable结果匹配,并通知用户如果不匹配则哪些参数不正确即(如果字典中的Key与参数中的Name属性不匹配)字典中Value的类或数据类型不等于各个Key的Parameters类中的Type

1 个答案:

答案 0 :(得分:3)

鉴于以下内容:

IQueryable<Parameters> theParams;  // list of parameters
Dictionary<string, object> paramsList;

如果我理解您的问题,您需要使用IQueryable作为关键字,Name作为值,从Type创建字典。

var paramsDictionary = theParams.ToDictionary(parm => parm.Name, parm => parm.Type);

然后,浏览paramsList字典并查找paramsDictionary中的每个密钥,并检查类型。

foreach (var kvp in paramsList)
{
    string typeName;
    if (!paramsDictionary.TryGetValue(kvp.Key, out typeName))
    {
        // error: key isn't in parameters list
    }

    // Get the type of the object in the dictionary
    Type objectType = kvp.Value.GetType();
    if (typeName != objectType.Name)
    {
        // error: type names don't match
    }
}