我想设置一个按钮,当我按下它时,它将获取文本框中的字符串并查找数据表上以此字符串或字符开头的某些Feild 上的所有记录。 然后在Listbox或DataGridViewer
中显示结果这里是我已经实现的一点代码,但我不能继续它
private void button3_Click(object sender, EventArgs e)
{
MyLinqDataContext MyData = new MyLinqDataContext();
MyList myLambda = MyData.MyLists.First(lambda => lambda.First_Name.StartsWith(TxtFirstName.Text));
}
提前致谢:)
答案 0 :(得分:2)
1)linq中的First
返回单个记录。您将需要使用Where
返回列表。
2)linq中的Where
将返回类型为IEnumerable<T>
的集合。您之后需要致电.ToList()
,或使用var
作为类型。
3)只要您具有可查询格式的原始表,就不需要创建新的数据上下文来对其进行运行。
最终代码,例如
private void button3_Click(object sender, EventArgs e)
{
var myLambda = MyDataTable.AsEnumerable().Where(lambda => lambda.Field<string>("First_Name").StartsWith(TxtFirstName.Text));
//var should be of the type IEnumerable<DataRow>
//from here, we can use this var as the DataSource for another display
resultsBox.DataSource = myLambda;
//assuming resultsBox can interpret a datarow correctly.
//You may need to select First_Name only, or some other data, out of the returned values.
}
或者,使用数据上下文
private void button3_Click(object sender, EventArgs e)
{
MyLinqDataContext MyData = new MyLinqDataContext();
var myLambda = MyData.MyLists.Where(lambda => lambda.First_Name.StartsWith(TxtFirstName.Text));
resultsBox.DataSource = myLambda;
}
答案 1 :(得分:1)
如果您想查找不想使用.First()
的所有记录,请使用.Where()
private void button3_Click(object sender, EventArgs e)
{
MyLinqDataContext MyData = new MyLinqDataContext();
MyList myLambda = MyData.MyLists.Where(lambda => lambda.First_Name.StartsWith(TxtFirstName.Text[0].ToString()));
}
以上使用字符串[0]的第一个索引来检索第一个字符。