Search code examples
c#linqlinq-to-sqlcsla

Hanging Linq query with Guid.Empty in the where expression


I'm having an issue with the following code:

    private void DataPortal_Fetch(TaskCriteria criteria)
    {
        using (var ctx = ContextManager<Gimli.Data.GimliDataContext>
                    .GetManager(Database.ApplicationConnection, false))
        {
            this.RaiseListChangedEvents = false;
            this.IsReadOnly = false;

            IQueryable<Data.Task> query = ctx.DataContext.Tasks;

            if (criteria.ReadyForPricing)
            {
                query = query.Where(row => row.IsPriced != true);
                query = query.Where(row => row.Status == (int)TaskStatus.Closed);
                query = query.Where(row => row.InvoiceId == Guid.Empty);
            }

            if (criteria.ReadyForInvoicing)
            {
                query = query.Where(row => row.IsPriced == true);
                query = query.Where(row => row.Status == (int)TaskStatus.Closed);
                query = query.Where(row => row.InvoiceId == Guid.Empty);
            }

            var data = query.Select(row => TaskInfo.FetchTaskInfo(row));

            this.AddRange(data);

            this.IsReadOnly = true;
            this.RaiseListChangedEvents = true;
        }
    }

My web application, when it calls this method, always hangs if I don't comment out the following line:

query = query.Where(row => row.InvoiceId == Guid.Empty)

Any idea why this would be happening?


Solution

  • The following code works ... interestingly enough ... any idea of why?

    query = query.Where(row => row.InvoiceId == new Guid("00000000-0000-0000-0000-000000000000"));