2016-04-19 9 views
0

私はlinqが初めてで、次のSQLクエリをlinqに変換しようとしています。Linqのフィールドとして選択

select c.ClientID , c.ClientName 
    , ISNULL((select 1 from clientcontactaccess cca 
     where cca.clientid = c.clientid and ClientContactID = 2141 ), 0) 'ClientAccess' 
    from Clients c 
    where c.GroupID = 1 

私はこれまでこれを試しましたが、where句をどこに含めるべきかわかりません。更新

Dim query = (From c In db.Client Select New With _ 
       {Key .ClientID = c.ClientID, _ 
       Key .ClientName = c.ClientName, _ 
       Key .ClientAccess = (From cca In db.ClientContactAccess Where cca.ClientID = c.ClientID And cca.ClientContactID = _contactID)}) 

を私はこれまでのところが、clientAccessフィールドが値を返さない来るように管理しています。私はあなたのSQLクエリを変換しようとしたが、私はあなたのためにこれが仕事でわからないんだけど、私はC#で、このようなクエリの結果を変換し、あなたが少し必要だと思う1または0

Dim query = (From c In db.Client Where c.GroupID = 1 Select New With _ 
       {Key .ClientID = c.ClientID, _ 
       Key .ClientName = c.ClientName, _ 
       Key .ClientAccess = (From cca In db.ClientContactAccess Where cca.ClientID = c.ClientID And cca.ClientContactID = _contactID)}) 
+1

これまでに試したことがありますが... ...何ですか? –

+0

選択の前 - 'cからdb.Clientの場所c.GroupID = 1新規を選択... ' – Tim

+0

LinqerはSQLからLINQへの変換ツールです。 LINQを学び、既存のSQL文を変換するのに役立ちます。 – Dejan

答えて

0

のいずれかを返す必要がありますあなたのニーズに合わせて少し変更してください。

var result=from c in Clients select 
new {c.ClientID,c.ClientName, cca.Where(x=>x.ClientId=c.ClientID 
&& x.ClientContactId=2141).Any()} where c.GroupID==1; 
+0

1. OPはC#ではなくVB.NETを使用しています。あなたが書いたものはコンパイルされないと確信しています。なぜなら、LINQでの選択後にどこが来るのだろうと信じていないからです。 – Tim

関連する問題