0

这是我在 ASP.NET Web 表单项目中遇到的问题。

我有显示数据库中所有产品的 Datalist,每个产品都有一种或多种颜色。目前我写这样的查询是为了显示所有产品和默认照片,但不显示与该产品相关的颜色:

var query = from p in db.Products
                        from c in db.Pics
                        where c.ProductId == p.ProductId
                        where c.IsDefault == true
                        select new { p.ProductId, p.ProductType, p.Name, p.Number, p.Package, p.Model, p.Size, p.Material, p.MantoLengh, c.PicAddress};

            DataList1.DataSource = query;
            DataList1.DataBind();

我不知道如何将相关颜色绑定到我的 DataList 控件内的列表控件(如 datalist 或其他列表控件),这是我的数据库图的视图以获取更多信息:

在此处输入图像描述

4

2 回答 2

1

我认为这个查询会起作用,但如果我的语法稍有偏差,我会提前道歉,我比 C# 更 VB...

        var query = from p in db.Products 
                    select new { p.ProductId, 
                        p.ProductType, 
                        p.Name, 
                        p.Number, 
                        p.Package, 
                        p.Model, 
                        p.Size, 
                        p.Material, 
                        p.MantoLengh, 
                        p.Pics.Where(x => x.IsDefault).Select(x => x.PicAddress).ToList(), 
                        p.Colors.Select(x => x.ColorHex).ToList() };

基本上,在您选择的匿名类型中,您可以使用 lambda 使用 Select().ToList() 获取一对多集合,并使用 .Where() 执行过滤。

希望有帮助。

编辑 - 回应您的评论:

我选择了十六进制颜色字符串,因为它们看起来是创建实际颜色的最佳选择。要从 Hex 中创建颜色,请参阅这篇文章。您想在列表的哪个位置添加颜色?

于 2011-06-16T11:48:24.453 回答
0

我相信在将结果绑定到数据列表后,您应该能够在 DataList $<%#query.DataItem("Colors")%> 中执行类似的操作

于 2011-06-16T12:37:02.383 回答