7

我有两个 linq 查询。我想在另一个查询中使用一个查询的结果。

var t2s = (from temp3 in _ent.Products                       
           where temp3.Row_Num == 2
           select new { temp3.ProductID });

然后我在另一个查询中使用这个 var:

var _query = (from P1 in _ent.brands
              join temp2 in on 
                  new { Produ_ID = (Int32?)P1.Prod_ID } 
                  equals new { Produ_ID = (Int32?)temp2.ProductID }
             );

当我自己运行第一个查询时,它会给我正确的结果。如果我在没有 a 的情况下运行第二个,join它会给我正确的结果,但是带有 ajoin会给我以下错误:

错误:无法创建“匿名类型”类型的常量值。此上下文仅支持原始类型(“例如 Int32、String 和 Guid”)

4

2 回答 2

3

你确定你需要加入吗?那这个呢:

var t2s = _ent.Products.Where(t => t.Row_Num == 1).Select(t =>t.ProductID);

var _query = _ent.brands.Where(b => t2s.Contains(b.Prod_ID));

根据 ProductID 和/或 Prod_ID 是否可以为空,您可能需要稍作更改。

于 2013-04-09T16:58:49.097 回答
2

尝试按如下方式更改您的查询:

var t2s = from temp3 in _ent.Products                       
          where
             temp3.Row_Num == 2
          select temp3.ProductID;

var _query = from P1 in _ent.brands
             join temp2 in t2s on P1.Prod_ID equals temp2 
             select ...
于 2013-04-09T16:51:56.730 回答