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");

构建自己的字符串有什么问题?您应该真正了解以下基本知识: