私はLINQの非常に基本的なものしか持っていません。私はSQLとJDBCを話し、LINQ Entity Frameworkに動的PL/SQLを変換することを任されています。条件付きWHERE句をLINQクエリに追加するにはどうすればよいですか?ここで(型情報を除外)非常に簡単な例です:LINQ Entity Frameworkへの動的SQL
Q1 := 'SELECT bDay = b.birthday
address = b.address
FROM (' ;
Q2 := 'SELECT folks.birthday, Address.address
FROM folks,
(SELECT state,
surname AS name
FROM Individuals, Addresses
WHERE Individuals.addrId = Address.id
AND Addresses.state = 'CA') find1
,(SELECT state,
surname AS name
FROM Individuals, Addresses
WHERE Individuals.addrId = Address.id
AND Addresses.state = 'NV') find2
AND find1.state(+) = folks.state';
IF input_parm = 'RED' THEN
condAddOn :=condAddOn || 'AND folks.vacationHouse IS NOT NULL';
END IF;
IF input_parm = 'BLUE' THEN
condAddOn :=condAddOn || 'AND folks.vacationHouse = 'Cabin';
END IF;
...
OPEN curs FOR Q1 || Q2 || condAddOn ')b';
C#/ LINQの構文を把握しようとすると、ここでの私の試みは、(作業ボトムアップ)である:
var find1 = (from addr in Addresses
from indiv in Individuals
where indiv.addrId = addr.addrID
select new
{
indiv.state,
indiv.surname
});
var find1OuterJoin = (from person in folks
join f1 in find1 on person.addrId equals f1.addrID
from f1OutJn in temp.DefaultIfEmpty()
select new
{
f1OutJn.state,
f1OutJn.surname
});
var Q2 = (from person in folks
from addr in addresses
from f1 in find1OuterJoin
where person.addrId == addr.addrId
&& f1.state == folks.state
select new
{
person.birthday
,addr.address
});
var Q1 = (from q2 in Q1
select new
{bDay = b.birthday
,address = b.address
});
私はドン」私が正しく 2 Q2にQ1を導入した場合、T句 が同等のカーソル文で終わるためにWHEREダイナミックを導入する方法) 1)を知っている:
OPEN curs FOR Q1 || Q2 || condAddOn ')b';
Added:動的ビットを含めるために関数または式を使用できますか?私はExpressionとExpandable()への参照を見ましたが、わかりません。 追加:LINQクエリでの試行
は説明をいただき、ありがとうございます。私はそれが私を始められると思う:-) – frododot