我在使用Linq join / groupby / orderby查询时遇到问题

时间:2015-03-10 13:38:51

标签: c# sql sql-server linq join

我有某种语法错误。

var productsForList = from p in db.vEUProducts
                      join pt in db.vEUProductTags on p.ProductId equals pt.ProductId
                      group p by p.ProductId into relevance
                      where toList.Contains(pt.TagId) && (relevance.Count() == toList.Count)
                      orderby relevance descending
                      select pt;

我收到错误:

  

'名称" pt"在当前上下文中不存在"

为什么?

它指向toList.Contains(**pt**.TagId)

我所做的只是添加小组,现在找不到pt

我错过了什么?

TagID是主键。我有产品,我有标签。我想获得与列表中的标签匹配一定次数的产品。

昨天我的问题here可能有所帮助。

1 个答案:

答案 0 :(得分:0)

你可以尝试:

var productsForList = from p in db.vEUProducts
                      join pt in db.vEUProductTags on p.ProductId equals pt.ProductId
                      where toList.Contains(pt.TagId) 
                      group pt by pt.ProductId into relevance
                      where relevance.Count() == toList.Count
                      select relevance;

(我已将where分成两个where

但我不确定你要做什么......我不知道TagId是否是主键。您应该尝试解释什么是TagId以及您想要获得什么。

使用结果的例子:

// Each obj is a group with key the ProductId and elements the tags matched
foreach (var obj in productsForList)
{
    int productId = obj.Key;

    foreach (var matchedTags in obj)
    {

    }
}