|M| DataTable.Select问题,我想对查询的文字进行格式化要怎么办
private void GetRowsByFilter()
{
DataTable table = DataSet1.Tables[ "Orders "];
// Presuming the DataTable has a column named Date.
string expression;
expression = "Date > '1/1/00 ' ";
DataRow[] foundRows;
// Use the Select method to find all rows matching the filter.
foundRows = table.Select(expression);
// Print column 0 of each returned row.
for(int i = 0; i < foundRows.Length; i ++)
{
Console.WriteLine(foundRows[i][0]);
}
}
上面是我装的MSDN Select 的示例
expression = "Date > '1/1/00 ' ";
这一行我的要更改为
expression = "name like '%zg% ' ";
但因为我的Table里面的name都是中文啊这里的 "zg "要可以Select 出"中国"
转换参考http://community.csdn.net/Expert/topic/5409/5409486.xml?temp=6.995791E-02幕白兄的代码
我现在想的办法是
将我的dt1用循环的办法判断行里的name转成字母再用indexof判断是否不为-1
如果不为-1就添加到新的dt2
后再绑定dt2
我想问的是我上面的办法可不可以
有没有更好的
谢谢
[解决办法]
这种完整性的问题,最直接的办法是在数据库中增加国家名称的字段
要么就在数据访问层进行数据存储时做转换,如:
/// <summary>
/// 转换Boolean数据类型
/// </summary>
/// <param name= "value "> 转换的值 </param>
/// <returns> </returns>
public static String OraBit(Boolean value)
{
if (value)
return "Y ";
else
return "N ";
}
/// <summary>
/// 转换Boolean数据类型
/// </summary>
/// <param name= "value "> 转换的值 </param>
/// <returns> </returns>
public static Boolean OraBool(String value)
{
if (value.Equals( "Y "))
return true;
else
return false;
}
[解决办法]
记忆中多个Datatable之间是可以关联查询的,你可以从这方面试试。
另外对处理一下条件字符串应该是正道
[解决办法]
sql把name列取中文首字母..
[解决办法]
expression = "name like '%中国% ' ";
DataRow[] dr1 = new DataRow();
dr1 = dt1.Select(expression);
DataSet ds1=new DataSet();
ds1.meg..(dr1);
ds.dispose();
现在就可以用ds1.Tables[0]......了
[解决办法]
如果要转换中文和字母,那你最好弄一个表,先对应DT1替换一下,然后再用上面的方法就OK了
[解决办法]
CREATE FUNCTION f_GetPY(@str nvarchar(4000))
RETURNS nvarchar(4000)
AS
BEGIN
DECLARE @py TABLE(
ch char(1),
hz1 nchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS,
hz2 nchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS)
INSERT @py SELECT 'A ',N '吖 ',N '鏊 '
UNION ALL SELECT 'B ',N '八 ',N '簿 '
UNION ALL SELECT 'C ',N '嚓 ',N '错 '
UNION ALL SELECT 'D ',N '哒 ',N '跺 '
UNION ALL SELECT 'E ',N '屙 ',N '贰 '
UNION ALL SELECT 'F ',N '发 ',N '馥 '
UNION ALL SELECT 'G ',N '旮 ',N '过 '
UNION ALL SELECT 'H ',N '铪 ',N '蠖 '
UNION ALL SELECT 'J ',N '丌 ',N '竣 '
UNION ALL SELECT 'K ',N '咔 ',N '廓 '
UNION ALL SELECT 'L ',N '垃 ',N '雒 '
UNION ALL SELECT 'M ',N '妈 ',N '穆 '
UNION ALL SELECT 'N ',N '拿 ',N '糯 '
UNION ALL SELECT 'O ',N '噢 ',N '沤 '
UNION ALL SELECT 'P ',N '趴 ',N '曝 '
UNION ALL SELECT 'Q ',N '七 ',N '群 '
UNION ALL SELECT 'R ',N '蚺 ',N '箬 '
UNION ALL SELECT 'S ',N '仨 ',N '锁 '
UNION ALL SELECT 'T ',N '他 ',N '箨 '
UNION ALL SELECT 'W ',N '哇 ',N '鋈 '
UNION ALL SELECT 'X ',N '夕 ',N '蕈 '
UNION ALL SELECT 'Y ',N '丫 ',N '蕴 '
UNION ALL SELECT 'Z ',N '匝 ',N '做 '
DECLARE @i int
SET @i=PATINDEX( '%[吖-做]% ' COLLATE Chinese_PRC_CS_AS_KS_WS,@str)
WHILE @i> 0
SELECT @str=REPLACE(@str,SUBSTRING(@str,@i,1),ch)
,@i=PATINDEX( '%[吖-做]% ' COLLATE Chinese_PRC_CS_AS_KS_WS,@str)
FROM @py
WHERE SUBSTRING(@str,@i,1) BETWEEN hz1 AND hz2
RETURN(@str)
END
GO
[解决办法]
帮顶
[解决办法]
up
[解决办法]
up