Zinoex
Zinoex

Reputation: 512

Coalescing operator in linq query

The use of the null-coalescing operator returns an error: Operator '??' cannot be applied to operands of type 'int' and 'int'

When I hover over days it says (range variable) int days

var query = from date in dbdate.Dates
            join article in dbarticle.Articles on date.ArticleBarcode
                                               equals article.Barcode
            let days = article.Days
                    ?? dbgroup.Groups.Where(g => g.Number == article.GroupNumber)
                                .Select(g => g.Days).FirstOrDefault()

            where DbFunctions.AddDays(date.RunDate, days * -1) > DateTime.Now
            select article;

Upvotes: 0

Views: 2042

Answers (1)

Justin Iurman
Justin Iurman

Reputation: 19016

You cannot store a null value into an int.

int a = null; // error !


What you want is a nullable int:

Nullable<int> a = null;

or

int? a = null;

Both are equivalent

In your example, article.Days must be nullable
You can configure it into your database and your entity will have nullable int for this property
Then, you will be able to use ?? on it in your linq query

Simple example:

int? a = null;
int b = a ?? 5; // if a is null then store 5, otherwise store value of a

Upvotes: 1

Related Questions