Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Getting same data table after LINQ query
Message
 
 
To
11/06/2014 14:32:59
General information
Forum:
ASP.NET
Category:
LINQ
Environment versions
Environment:
C# 4.0
OS:
Windows 7
Network:
Windows 2003 Server
Database:
MS SQL Server
Application:
Web
Miscellaneous
Thread ID:
01601612
Message ID:
01601727
Views:
26
>>Hi Rob,
>>
>>This doesn't seem to work as is
>>
>>
>>  if (resourceEvent)                              
>>                  {
>>                      // Remove instructors who don't have anything planned
>>                      var query = dtInstructors.AsEnumerable().Where(c => dtAllScheduled.AsEnumerable().Any(b =>  1 == b.Field<Byte>("layer") 
>>                                          && true==b.Field<Boolean>("schdassign") && c.Field<String>("instr_id")== b.Field<String>("resource_id")
>>                                          ));
>>                      query.CopyToDataTable(dtInstructors, LoadOption.OverwriteChanges);
>>                  }
>>
>>My dtInstructors has rows but dtAllScheduled does not.
>>
>>After the query I am supposed to get 0 rows in the dtInstructors but it seems to be the same table as it was before the query. Do you see how can I adjust the code to get the query "overwrite" my original table?
>>
>>Thanks.
>
>Is it throwing an InvalidOperationException that is being caught elsewhere? See the conditions for that exception at http://msdn.microsoft.com/en-us/library/bb359707(v=vs.110).aspx

Update.

I figured this out with the following code:
               DataTable dtInstructorsAll = this.GetDataSet().Tables[0];
               DataTable dtInstructors;

               if (dtInstructorsAll.Rows.Count > 0)
               {
                  DateTime minDate = Functions.Smallest<DateTime>((DateTime)bRow.StartTime, preferenceStartTime);
                  DateTime maxDate = Functions.Largest<DateTime>((DateTime)bRow.EndTime, preferenceEndTime);

                  DateRange range = new DateRange(minDate, maxDate);

                  // GetPvtSortedResources doesn't not use instructor type where condition while GetPvtSortedSchedule does use it
                  DataTable dtAllScheduled = this.GetAllScheduled(sqlCommand, range, (resourceOnly) ? "" : instructorTypeWhere, resourceEvent);
                  Logging.LogFormat(4, "Number of eligible bookings returned in csrAllSched: {0}", dtAllScheduled.Rows.Count);

                  if (resourceEvent)                              
                  {
                      // Remove instructors who don't have anything planned
                      dtInstructors = dtInstructorsAll.Clone();
                      var query = dtInstructorsAll.AsEnumerable().Where(c => dtAllScheduled.AsEnumerable().Any(b =>  1 == b.Field<Byte>("layer") 
                                          && true==b.Field<Boolean>("schdassign") && c.Field<String>("instr_id")== b.Field<String>("resource_id")
                                          ));
                      query.CopyToDataTable(dtInstructors, LoadOption.OverwriteChanges);
                  }
                      else
                  {
                      dtInstructors = dtInstructorsAll.Copy();
                  }
So, I originally create a different table and then either copy or clone and CopyToDataTable depending on my condition.

Does it sound like an OK solution?
If it's not broken, fix it until it is.


My Blog
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform