如何在键值c#中检查值是否为多个

时间:2015-06-04 04:37:27

标签: c# asp.net-mvc

以下是方法:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    var parameters = filterContext.ActionParameters.ToArray();
    if (parameters.Count() > 0)
    {
        foreach (KeyValuePair<string, object> data in parameters)
        {
            singleparameters = singleparameters + data.Key + ":" + " " + data.Value + ",";

        }
        singleparameters = singleparameters.Remove(singleparameters.LastIndexOf(','));

我想检查数据值是否包含单个或多个值。

如果数据是单个数据,那么key:reqvalue: pagerecords:200

如果数据包含多个值,则检查值是否包含数组或单个值。例如:key:reqvalues: pagerecords:200, pageinfo:"adsa", count:0, filter: records:200,cotnain:"asa"

我想检查条件是否访问..

我是这方面的新手所以请给我任何建议      更多澄清 keyvaluepair

2 个答案:

答案 0 :(得分:0)

这可以帮助您检查值是单个还是多个:

var valueFields = data.Value.GetType().GetFields();
var fieldNumber = valueFields.Length;  
//If fieldNumber = 1 it is single, otherwise it is multiple

然后你可以检查它是否包含任何数组

foreach(var fld in valueFields) {
  bool isArray = fld.FieldType.IsArray; //true if the field is an array
}

答案 1 :(得分:0)

 foreach (KeyValuePair<string, object> data in parameters)
 {
      if (data.Key == "request" && data.value is jqGridRequest)
      {
       var fields = g.GetType().GetProperties();
       bool hasSingleValue = fields.Count(x => x.GetValue(g, null) != null) == 1;
      }
 }
从截图中可以清楚地知道data.value类型是jqGridRequest,所以我们可以直接利用该对象来检查或得到所需的值,实际上你也不需要做循环,直接转换对象并使用使用if else的财产。

jqGridRequest request = data.value as jqGridRequest;
if (request != null)
{
int  pageindex = request.PageIndex;
//// so on other properties, get it and use it directly without looping. 
}