1

我的项目有问题。我有一个用于保存类别的表格,我有一个listview用于查看该类别名称的表格,并且我在listview. 当我在 中键入字母时textbox,我想使用 LINQ 查询在列表视图中查看相应的类别名称,为此我正在使用以下代码:

 DataTable dt = (from c in Common.dc.TblBrands
                    where SqlMethods.Like(c.BrandName, txtSearch.Text+"%")
                    orderby c.BrandName
                    select c).getDataTable();

我可以正确看到名称,但我想在textbox. 我可以使用什么查询来实现这一点?

4

3 回答 3

4

您可以使用ContainsStartsWith。对于您的特定情况SqlMethods.Like(c.BrandName, txtSearch.Text+"%"),您可以使用 StartsWith

DataTable dt = (from c in Common.dc.TblBrands
                where c.BrandName.StartsWith(txtSearch.Text)
                orderby c.BrandName
                select c).getDataTable();
于 2012-11-02T06:29:33.040 回答
1

听起来你想要这样的东西:

DataTable dt = (from c in Common.dc.TblBrands
                where SqlMethods.Like(c.BrandName, txtSearch.Text+"%")
                      || c.BrandId == txtSearch.Text
                orderby c.BrandName
                select c).getDataTable();

或使用StartsWith代替SqlMethods.Like

DataTable dt = (from c in Common.dc.TblBrands
                where c.BrandName.StartsWith(txtSearch.Text)
                      || c.BrandId == txtSearch.Text
                orderby c.BrandName
                select c).getDataTable();

当然,这一切都假设BrandId也是一个字符串。如果它(比如说)是一个整数,它可能会变得有点毛茸茸。在这两种情况下,我都会txtSearch.Text先亲自提取 - 我怀疑我什至会在可以访问 UI 的代码中使用查询,但这是一个架构问题。

(不清楚getDataTable()这里是什么 - 如果它是您自己的扩展方法,请考虑修改名称以遵循 .NET 约定。)

于 2012-11-02T06:54:23.520 回答
1

您也SqlMethods.Like可以在 namespace 下使用 available System.Data.Linq.SqlClient

DataTable dt = (from c in Common.dc.TblBrands
                where SqlMethods.Like(c.BrandName, txtSearch.Text + "%")
                orderby c.BrandName
                select c).getDataTable();

添加:如果您尝试搜索 BrandId(假设int类型),您可以这样做:

DataTable dt = (from c in Common.dc.TblBrands
                where SqlMethods.Like(c.BrandName, txtSearch.Text + "%") ||
                      c.BrandId.ToString().Equals(txtSearch.Text)
                orderby c.BrandName
                select c).getDataTable();
于 2012-11-02T06:42:52.713 回答