我有一个集合
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
答案 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
}
}