1

だから私はこのクエリを持っています:

   var list = (from x in xList 
                 join a in AList on x.commonfield equals a.commonfield
                 join b in BList on x.newCommonField equals b.newCommonField
                 from c in Clist.Where(p=>p.connectorID==x.connectorID).DefaultifEmpty()
                                select new { x, a.DesiredFieldFromA, b.DesiredFieldFromB,c.name}).ToList();

    list.ForEach(el =>
                    {
                        el.x.DesiredFieldFromA= el.DesiredFieldFromA;
                        el.x.DesiredFieldFromB= el.DesiredFieldFromB ;
                        el.x.Name=el.name;
                    });
    return list.Select(p=>p.x);

私がする時 :

select new { x, a.DesiredFieldFromA, b.DesiredFieldFromB,c.name}).ToList();

質問#1:レコードが表示されるはずだとどうやって伝えることができますか...ただし、名前フィールドがnullの場合はstring.emptyを入力してください。
何かに沿って:

select new { x, a.DesiredFieldFromA, b.DesiredFieldFromB,c.name??string.Empty}).ToList();

質問#2:「connectorID」がnullであっても、xレコードを表示するためにそれが必要であることをどのように伝えることができますか。
よろしくお願いします。

#1と#2の解決策は次のとおりです。

from c in Clist.Where(p=>p.connectorID==x.connectorID).DefaultifEmpty()
                                select new { x, a.DesiredFieldFromA, b.DesiredFieldFromB,name= (c==null) ?"Not Defined": c.name}).ToList();
4

2 に答える 2

1

質問2については、以下を変更します。

from c in Clist.Where(p=>p.connectorID==x.connectorID).DefaultidEmpty()

に:

from c in Clist.Where(p=>p.connectorID==x.connectorID || x.connectorID == null)
于 2012-06-21T13:07:49.350 に答える
0

質問1については、次のことを試してください。

select new { 
    x, 
    a.DesiredFieldFromA, 
    b.DesiredFieldFromB, 
    name = c.name ?? string.Empty
}).ToList();

式を使用して割り当てることができるように、名前「name」を指定する必要があります。

質問2については、jonnyGoldの回答を参照してください。

于 2012-06-21T13:04:52.470 に答える