Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have the following code

    return
    this.Storage.Customer.OfType<Preferred>()
    .Include(b  => b.Order)
    .Where(cust => cust.Id == customerId && cust.CustomerType== (int)cusType)
    .SingleOrDefault();

It can be rewritten as follows eliminating the where.

    return
    this.Storage.Customer.OfType<Preferred>()
    .Include(b  => b.Order)
    .SingleOrDefault(cust => cust.Id == customerId && cust.CustomerType == (int)cusType);

Which one is better practice and why?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
400 views
Welcome To Ask or Share your Answers For Others

1 Answer

Thanks to the complexity of debugging the return value of functions, and the impossibility of using lambda expressions in the debugger, this is the best way:

var temp = this.Storage.Customer.OfType<Preferred>()
    .Include(b  => b.Order)
    .Where(cust => cust.Id == customerId && cust.CustomerType == (int)cusType);

return temp.SingleOrDefault();

In this way, if there is an exception on the SingleOrDefault() (something quite common if you are doing complex expressions), you can put a breakpoint on the return and do in the watch panel: temp.ToList();


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...