C# 数据表访问控制
大家好,我有以下代码C# 数据表访问控制,c#,.net,C#,.net,大家好,我有以下代码 Console.WriteLine("y: {0}", liveData.Tables["Players"].Rows.Count); //Shows full table DataRow[] foundRows; foundRows = liveData.Tables["Players"].Select("FName like 'Marc'"); foreach (DataRow dr in foundRows)
Console.WriteLine("y: {0}", liveData.Tables["Players"].Rows.Count); //Shows full table
DataRow[] foundRows;
foundRows = liveData.Tables["Players"].Select("FName like 'Marc'");
foreach (DataRow dr in foundRows)
{
Console.WriteLine("Index is " + dr.Table.Rows.IndexOf(dr));
}
现在,当我返回正确显示的变量dr处的行索引时
我想做的是,它声明Fname和Marc,我想将它们作为变量传递,而不是手动输入字符串,这可能吗
例如,有时我可能需要搜索Lname和其他名称,或者不同的名字
感谢您看起来有点困惑,但可能还是一个简单的答案:
string SelectQuery=//create query based on user input
foundRows = liveData.Tables["Players"].Select(SelectQuery);
例如,如果用户希望基于姓氏进行搜索,则使用Lname+like+搜索词。您需要将搜索属性与列名进行映射。您不能只使用变量构建字符串吗?:。如果我没有弄错,请选择param+like'+value+',您希望让查询从FName中选择一个类似于用户输入的名称(在本例中为“Marc”) 如果是这样的话,最好的办法就是让某个东西预先请求输入,然后将该值从文本框分配到一个变量中
String Queryname = TextBox1.Text
Console.WriteLine("y: {0}", liveData.Tables["Players"].Rows.Count); //Shows full table
DataRow[] foundRows;
foundRows = liveData.Tables["Players"].Select("FName like " + Queryname);
foreach (DataRow dr in foundRows)
{
Console.WriteLine("Index is " + dr.Table.Rows.IndexOf(dr));
}
如果我没有理解你的问题,请原谅。让我知道这是否可行,如果不行,试着用一个例子来说明。您可以创建一个函数
public DataRow[] MySelect(string column, string name)
{
return liveData.Tables["Players"].Select(string.Format("{0} LIKE '{1}'", column, name));
}
然后像这样使用它
foundRows = MySelect("LName", "John");
构建自己的字符串有什么问题?您应该真正了解以下基本知识: