我正在尝试使用存储过程在WinFomrs应用程序中搜索用户。我有以下代码:
Regex regPattern = new Regex(searchTextBox.Text);
dataGridView1.DataSource = users.GetAllUsers()
.Where<users>(item => regPattern.IsMatch(item.FirstName))
.ToList<users>();`
但是它不起作用,因为我的DAL中的GetAllUsers
没有where
语句,因为我使用了存储过程而不是常规的SQL语句,因此如何解决这个问题,伙计们?
这是我的BAL:
public List<GetAllUsers> GetAllUsers()
{
List<GetAllUsers> UserDatails = new List<GetAllUsers>();
try
{
CacheConnection.ClearParameters();
dataTable = CacheConnection.GetDataTable("AGSP.Users_GetAllUsers2");
if (dataTable.Rows.Count != 0)
{
foreach (DataRow r in dataTable.Rows)
{
GetAllUsers oBo = new GetAllUsers();
Type myType = typeof(GetAllUsers);
System.Reflection.PropertyInfo[] properties = myType.GetProperties();
foreach (System.Reflection.PropertyInfo p in properties)
{
if (dataTable.Columns.Contains(p.Name))
{
if (ReferenceEquals(r[p.Name], DBNull.Value))
{
if (p.PropertyType.ToString() == "System.DateTime")
{
p.SetValue(oBo, DateTime.Now, null);
}
else if (p.PropertyType.ToString() == "System.String")
{
p.SetValue(oBo, "", null);
}
}
else
{
p.SetValue(oBo, r[p.Name], null);
}
}
}
UserDatails.Add(oBo);
}
return UserDatails;
}
}
catch (Exception ex)
{
throw ex;
}
return UserDatails;
}
顺便说一句,我没有使用SQL,我的数据库使用的是Caché编程语言,但是它也具有存储过程。
我固定了他们
这是我在搜索按钮中所做的
Regex regPattern = new Regex(searchTextBox.Text);
lstUsers.DataSource = users.GetAllUsersByUsername(searchTextBox.Text);
代替此
Regex regPattern = new Regex(searchTextBox.Text);
dataGridView1.DataSource = users.GetAllUsers()
.Where<users>(item => regPattern.IsMatch(item.FirstName))
.ToList<users>();`
还有
这就是我在DAL中所做的
public List<GetAllUsers> GetAllUsersByUsername(string username)
{
List<GetAllUsers> UserDatails = new List<GetAllUsers>();
try
{
CacheConnection.ClearParameters();
CacheConnection.AddParameter("UserName", username);
答案 0 :(得分:1)
您可以将搜索值传递给存储过程,然后在返回结果的where语句中使用“%Search Term%”之类的语句代替从查询中返回所有用户。
或者您可以在数据表上放置一个行过滤器,以这种方式过滤结果。在进入for循环之前。
此页面对过滤有很好的描述 https://msdn.microsoft.com/en-us/library/system.data.dataview.rowfilter(v=vs.110).aspx enter link description here
这是一个很好的搜索示例: http://www.csharp-examples.net/dataview-rowfilter/