0

DataTableLINQを使用してとSQLテーブルを結合する必要があります。

これはLINQクエリです。

from c in db.Staging
join c1 in tagging on c.RPT_ID equals c1.RPT_ID
select c

ただし、次のエラーが発生します。

System.NotSupportedException:ローカルシーケンスは、Contains演算子を除くクエリ演算子のLINQtoSQL実装では使用できません。

4

3 に答える 3

0

You can only do this if all of the records that you're joining on are in memory first. You'll need to do the following.

var s = db.Staging.ToList(); 
var joinedResult = from c in s
                 join c1 in tagging on c.RPT_ID = c1.RPT_ID
                 select c;

Calling ToList() causes the SQL to execute and fetch all the records from the database. This isn't good if you have lots of records in the database.

What you probably want to do is the following actually.

var IDs = tagging.Select(t=>t.RPT_ID).ToArray();
var matches = db.Staging.Where(s=>IDs.Contains(s.RPT_ID);

That will only find the Staging records in the DB that you have IDs for in your data table. Much more efficient if you have a big Staging table.

于 2013-02-16T08:04:14.497 に答える
0

これを試して:

from c in db.Staging
join c1 in tagging on c.RPT_ID = c1.RPT_ID
select c

確認するVSはありませんが、.NET関数が組み込まれているため、「等しい」で壊れていると思います。LINQ は、すべての関数を TSQL に変換できるわけではありません。

于 2013-02-16T08:06:14.140 に答える