1
var query_1 = from m in db.tableA
                        join n in db.tableB
                        on m.OwnerID equals n.OwnerID into tabA
                        from a in tabA
                        join o in db.tableC
                        on m.OwnerID equals o.OwnerID 
                        where m.UserID == userSessionID
                        && m.ActiveStatus == 1
                        select new { OwnerName = m.OwnerName };

var query_2 = from m in db.tableD
                        join n in db.tableE
                        on m.OwnerID equals n.OwnerID into tabX
                        from a in tabX
                        join o in db.tableF
                        on m.OwnerID equals o.OwnerID 
                        where {?????????????}
                        select new { ...... };

上記のコードから、query_1 はデータベースから取得した要素のリストを返します。必要なのは、query_1 の最初の項目のみが必要で、この要素の列を query_2 の条件として使用することです。すべての要素を取得するために foreach を使用して query_1 をループしていましたが、今回は最初の項目のみが必要です。query_1 のリストは null を返す可能性があるため、ハードコードは許可されないことに注意してください。運が良ければ?

4

3 に答える 3

1

query_1 の後。

var firstOwner = query_1.FirstOrDefault() ?? string.Empty;

次に、query_2 で、m ( db.tableD) にOwnerNameプロパティがあると仮定します...

where m.OwnerName = firstOwner;

バージョン 2OwnerId 、 from query_1が必要な場合:

に変更します

select new { OwnerName = m.OwnerName, OwnerId = m.OwnerId };

よりも

var firstOwner = query_1.FirstOrDefault();
var firstOwnerId = firstOwner == null ? -1 : firstOwner.OwnerId;

および query_2 で

where m.OwnerId = firstOwnerId;
于 2013-08-29T06:36:02.623 に答える
0

.FirstOrDefault()最初のクエリから最初の要素を取得するために使用 でき、必要に応じてその値を使用できます。

こちらもご覧ください

于 2013-08-29T06:40:07.640 に答える