日期:2014-05-17  浏览次数:20532 次

求个高效写法
我有一个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++;
            }