Hi Greg. FirstOrDefault() will return 0 for non null Ints, So I'm guessing that t.Id is an (int).
So you're going to have to do something like this. List<AB> abs = new List<AB>(); for (int i = 0; i < 10; i++) { abs.Add(new AB { Id = i }); } int? id = null; IEnumerable<int> output = from t in abs where t.Id == 1000 select t.Id; if(output.Any()) { id = output.First(); } Assert.IsNull(id); or This. public static int? FirstOrNull(this IEnumerable<int> query) { if (query.Any()) { return query.First(); } return null; } int? alternative = (from t in abs where t.Id == 1000 select t.Id).FirstOrNull(); hth. Davy, The US Congress voted Pizza sauce a vegetable. Don't even try to convince me of anything in the states is sane any more! On Mon, Mar 4, 2013 at 11:20 AM, James Chapman-Smith < ja...@chapman-smith.com> wrote: > Try this:**** > > ** ** > > int? id =**** > > (from t in things where t.Name == "Foo" select t.Id)**** > > .ToArray()**** > > .Concat(new int?[] { null })**** > > .First();**** > > ** ** > > Cheers.**** > > ** ** > > James.**** > > ** ** > > *From:* ozdotnet-boun...@ozdotnet.com [mailto: > ozdotnet-boun...@ozdotnet.com] *On Behalf Of *Greg Keogh > *Sent:* Monday, 4 March 2013 18:20 > *To:* ozDotNet > *Subject:* LINQ select nullable Id**** > > ** ** > > Folks, I want to select the int Id of an entity in a DbSet, or int? null > if it's not found. Like this *wrong* sample:**** > > **** > > int? id = (from t in things where t.Name == "Foo" select > t.Id).FirstOrDefault();**** > > **** > > In this case I get int zero if there is no match but I want null. Is there > some way of rearranging this to get an Id or null? Remember that the query > has to convertible down to SQL.**** > > **** > > Greg K**** >