已经str是一个字符串格式是
string str = "a='a111' and b='222' and ccc=200";
是样的一个格式,可能条件会更多现在想根据这个字条串条件生成DbParameter应该怎么写啊?
private DbParameter[] fun1(string str)
{
  如果传一个str过来(str的格式和上面的差不多,可能条件数量不固定),这里如何转换成DbParameter[]
}

解决方案 »

  1.   

    split以空格分开,然后对每个数组元素,取等号两遍的内容
      

  2.   

     string str = "a='a111' and b='222' and ccc=200";
                var ary = Regex.Matches(str, @"([\w_]+)=([""']?)(.*?)\2(?=\s|$)").OfType<Match>().Select(t => new { field = t.Groups[1].Value, value = t.Groups[3].Value }).ToArray();
                
      

  3.   

    分割成数组元素我会,但是根据数组元素创建DbParameter[]不会
      

  4.   

     private DbParameter[] fun1(string str)
            {
                //string str = "a='a111' and b='222' and ccc=200";
                var array = Regex.Matches(str, @"([\w_]+)=([""']?)(.*?)\2(?=\s|$)").OfType<Match>().Select(t => new { field = t.Groups[1].Value, value = t.Groups[3].Value }).ToArray();
                if (array.Count() == 0)
                    return null;            DbParameter[] dbParameter = new DbParameter[array.Count()];            for (int i = 0; i < array.Count(); i++)
                {
                    dbParameter[i] = new DbParameter(array[i].field, array[i].value);
                }
                return dbParameter;
            }