0

我有一个请求创建一个将搜索数据表的自动完成。这是可以快速简单地实现的,还是编写合理数量的代码的情况?

最初,我一直在使用 web 服务和 linq 来指向单个列的数据 (IDDesc) 并拉回产品列表:

Product.FinalProductsDataContext dbac = new Product.FinalProductsDataContext();

            return dbac.tblProduct
                .Where(r => r.Account== HttpContext.Current.Session["AccountKey"].ToString() && r.IDDesc.Contains(prefixText))
                .Distinct()
                .OrderBy(r => r.IDDesc)
                .Select(r => r.IDDesc)
                .Take(count)
                .ToArray();

但是,如果我希望自动完成功能查看所有列,是否会为数据表中包含的每个列重复类似的 LINQ 语句,或者是否有“快速修复”?

我个人认为这不是一个理想的场景,但这是我必须努力实现的要求。

任何帮助或建议,不胜感激。

4

1 回答 1

0

与其尝试用 LINQ完全解决这个问题(并为表中的每一列重复所有这些语句,以及反复访问数据库),我想我希望在数据库中放一些东西来完成这里的繁重工作。

您可以创建一个视图,从表中获取字段并将它们合并到一列中,例如

CREATE VIEW [dbo].[ProductView]
AS
SELECT     CAST(ProductName AS NVARCHAR(50)) AS 'ProductColumn'
FROM         dbo.Products
UNION
SELECT CAST(SupplierName AS NVARCHAR(50))
FROM dbo.Products
UNION
...

如果您将视图添加到上下文中,那么您可以修改现有的 LINQ 查询并将其指向该视图,例如:

Product.FinalProductsDataContext dbac = new Product.FinalProductsDataContext();

return dbac.ProductView
    .Where(r => r.Account== HttpContext.Current.Session["AccountKey"].ToString() && r.ProductColumn.Contains(prefixText))
    .Distinct()
    .OrderBy(r => r.ProductColumn)
    .Select(r => r.ProductColumn)
    .Take(count)
    .ToArray();
于 2010-06-21T11:29:11.607 回答