当前位置: 代码迷 >> ASP.NET >> 求个高效率写法
  详细解决方案

求个高效率写法

热度:7247   发布时间:2013-02-25 00:00:00.0
求个高效写法
我有一个DataTable,

里面存了 4列

id sek ced med
1 101 3 101MP30234
2 102 3 102MP30234
3 103 3 103MP30234
4 104 3 101MP30234
5 105 3 101MP30234
6 108 3 108MP30234
...


现在想写个方法做个 验证, med 这列的 前三个字符是sek,第6个字符是ced,只要有一行数据不满足就返回错误.
我现在只能用 for 循环,一行一行 再利用substring函数 判断这种写法
有没什么 高效简洁的写法,或者把 datatable也可以转成 别的泛型什么的再做判断之类思路的写法.
求大牛指教下.


------解决方案--------------------------------------------------------
没办法,你要不就用sql去筛选,要不就用linq,要不就自己遍历
------解决方案--------------------------------------------------------
var query=from q in datatable.AsEnumerable() 
where q.Field<string>("med").SubString(0,3)!="sek"||q.Field<string>("med").SubString(5)!="ced" select med
if(query.Count()>0) return; //这个会全部遍历
========================================================
string value="";
foreach(var a in datatable.Rows.AsEnumerable())
{
value=a.Field<string>("med");
if(value.SubString(0,3)!="sek"||valueSubString(5)!="ced") return;
}
这个是常规的
------解决方案--------------------------------------------------------
C# code
            int i = 0;            while (true)            {                try                {                    var dataRow = dataTable.Rows[i];                }                catch                {                    return false;                }                var tempString = dataTable.Rows[i]["med"].ToString();                if (tempString.Substring(0, 2).Equals(dataTable.Rows[i]["sek"]) &&                    tempString[6].Equals(dataTable.Rows[i]["ced"]))                {                    return true;                }                i++;            }
  相关解决方案