1

問題が発生しているエンティティクエリへのlinqがあります。

var query = (from q in dc.Table1
                where (from a in dc.Table2 select a.TypeID).Contains(q.TypeID)
                select q);

このクエリは、Linq to SQL で有効です。次のような sql クエリを生成する必要があります。

select * from Table1 where TypeID in (select TypeID from Table2)

スローされたエラーは、Linq to Entities が「型 "Table2" の定数値を作成できません」であることを示唆しています

私は次のことができます:

var typelist = (from q in dc.Table2 select q.TypeID).ToList();

var query = (from q in dc.Table1
                where typelist.Contains(q.TypeID)
                select q);

ただし、1 つではなく 2 つの SQL クエリが生成されます。

select distinct TypeID from Table2;
select * from Table1 where TypeID in (1,2,3,4,5,6..... etc......);

何か案は

4

1 に答える 1

2

私はこのクエリを試してみましたが、うまくいきました:

var result = (from appgroup in test.AppGroupThemes
                      where (from t in test.Themes
                             select t.Id
                            ).Contains(appgroup.ThemeId)
                      select appgroup).ToList();
        Console.WriteLine(result.Count);
于 2013-05-22T02:21:36.407 に答える