1

「Orders」コレクションが null の場合、次の式が null を返す最善の方法を知りたいです。現在、「First」は例外を発生させます。「FirstOrDefault」を試しましたが成功しませんでした。

表現:

var myOrderItems = Model.Orders.First(o => o.Id == 1).OrderItems.ToList();

Orders がない場合は、"myOrderItems" を null にしたいと思います。

推奨される回答を他のクエリに適用したいので、これはクエリの例です。

編集:現在、ViewModel で「注文」を次のように定義しています。

List<Orders> _myOrders;

おそらく、次のように定義する必要があります。

List<Orders> _myOrders = new List<Orders> or something else to make it empty??????? 
4

4 に答える 4

2
var myOrderItems = Model.Orders == null ? null : Model.Orders.First(o => o.Id == 1).OrderItems.ToList();
于 2013-06-24T15:21:59.220 に答える
2

これを試して:

var myOrderItems = ((Model.Orders ?? Enumerable.Empty<YourType>())
                       .FirstOrDefault(o => o.Id == 1) ?? SomeNonNullDefault).OrderItems.ToList();

を使用している場合はAsQueryable後に追加し、を使用しないでください。Enumerable.EmptyIQueryableIEnumerable

于 2013-06-24T15:23:23.150 に答える
0

sがない場合はOrder、 になりたいと思いmyOrderItemsますnull

これは間違ったアプローチです。がない場合OrderOrderは空のコレクションを返す必要がありますが、 は返しませんnull。可能であれば、それを修正してください。いずれにせよ、 で同じ間違いを繰り返さないでくださいmyOrderItems

于 2013-06-24T22:16:09.153 に答える
0
List<OrderItems> myOrderItems = null;
if (Model.Orders != null)
{
    var order = Model.Orders.FirstOrDefault(o => o.Id == 1);

    if (order != null)
    {
        myOrderItems = order.OrderItems.ToList();
    }
}
于 2013-06-24T21:19:45.443 に答える