Convert Linq to DataTable
var query = (from employees in _dsSecurity.Employees.AsEnumerable()
join empSites in _dtEmployeesSite
on employees.EmployeeId equals empSites.EmployeeId
join empFilter in _dtScheduleProviders.AsEnumerable()
on employees.EmployeeId equals (Guid)empFilter["EmployeeId"]
where empSites.Field("SiteId") == (siteId) && empSites.Field("TheWeekDaysId") == dayNumber
&& empSites.StartTime.ToLocalTime().TimeOfDay <= StartTime
&& empSites.EndTime.ToLocalTime().TimeOfDay >= EndTime
select new
{
employees.EmployeeId,
EmployeeCode = employees.Field("EmployeeCode"),
EmployeeTypeId = Guid.Empty,
FirstName = employees.Field("FirstName"),
LastName = employees.Field("LastName"),
MiddleName = employees.Field("MiddleName"),
Title = employees.Field("Title"),
Prefix = employees.Field("Prefix"),
Suffix = employees.Field("Suffix"),
EmployeeImage = employees["EmployeeImage"],
Credentials = employees.Field("Credentials"),
Salutation = employees.Field("Salutation"),
IsInternal = employees.Field("IsInternal"),
IsClinician = employees.Field("IsClinician"),
employees.SchedulerTypeId,
HomePhone = employees.Field("HomePhone"),
CellPhone = employees.Field("CellPhone"),
IsActive = employees.Field("IsActive"),
EmployeeName =
employees.Field("LastName") + ", " + employees.Field("FirstName"),
employees.CreatedOn,
employees.CreatedBy,
employees.LastModifiedOn,
LastModifiedBy = employees.Field("LastModifiedBy"),
IsShowOnSchedule = employees.Field("IsShowOnSchedule")
}).Distinct();
DataTable dtEmp = _dsSecurity.Employees.Clone();
dtEmp = ToADOTable(query);
---------Convert Linq To Data Table----------------
private DataTable ToADOTable(IEnumerable varlist)
{
DataTable dtReturn = new DataTable();
try
{
// column names
PropertyInfo[] oProps = null;
if (varlist == null)
return dtReturn;
foreach (T rec in varlist)
{
// Use reflection to get property names, to create table, Only first time, others will follow
if (oProps == null)
{
oProps = (rec.GetType()).GetProperties();
foreach (PropertyInfo pi in oProps)
{
Type colType = pi.PropertyType;
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[0];
}
dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
}
}
DataRow dr = dtReturn.NewRow();
foreach (PropertyInfo pi in oProps)
{
dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null);
}
dtReturn.Rows.Add(dr);
}
}
catch (ExceptionBase exceptionBase)
{
Common.Generic.ShowSendToSupportMessage(exceptionBase.Message, exceptionBase.ExceptionDetails);
}
catch (System.Exception ex)
{
UILayerException uiLayerException = new UILayerException(ex, ExceptionSeverity.Error);
Common.Generic.ShowSendToSupportMessage(uiLayerException.Message, uiLayerException);
}
return dtReturn;
}
join empSites in _dtEmployeesSite
on employees.EmployeeId equals empSites.EmployeeId
join empFilter in _dtScheduleProviders.AsEnumerable()
on employees.EmployeeId equals (Guid)empFilter["EmployeeId"]
where empSites.Field
&& empSites.StartTime.ToLocalTime().TimeOfDay <= StartTime
&& empSites.EndTime.ToLocalTime().TimeOfDay >= EndTime
select new
{
employees.EmployeeId,
EmployeeCode = employees.Field
EmployeeTypeId = Guid.Empty,
FirstName = employees.Field
LastName = employees.Field
MiddleName = employees.Field
Title = employees.Field
Prefix = employees.Field
Suffix = employees.Field
EmployeeImage = employees["EmployeeImage"],
Credentials = employees.Field
Salutation = employees.Field
IsInternal = employees.Field
IsClinician = employees.Field
employees.SchedulerTypeId,
HomePhone = employees.Field
CellPhone = employees.Field
IsActive = employees.Field
EmployeeName =
employees.Field
employees.CreatedOn,
employees.CreatedBy,
employees.LastModifiedOn,
LastModifiedBy = employees.Field
IsShowOnSchedule = employees.Field
}).Distinct();
DataTable dtEmp = _dsSecurity.Employees.Clone();
dtEmp = ToADOTable(query);
---------Convert Linq To Data Table----------------
private DataTable ToADOTable
{
DataTable dtReturn = new DataTable();
try
{
// column names
PropertyInfo[] oProps = null;
if (varlist == null)
return dtReturn;
foreach (T rec in varlist)
{
// Use reflection to get property names, to create table, Only first time, others will follow
if (oProps == null)
{
oProps = (rec.GetType()).GetProperties();
foreach (PropertyInfo pi in oProps)
{
Type colType = pi.PropertyType;
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[0];
}
dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
}
}
DataRow dr = dtReturn.NewRow();
foreach (PropertyInfo pi in oProps)
{
dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null);
}
dtReturn.Rows.Add(dr);
}
}
catch (ExceptionBase exceptionBase)
{
Common.Generic.ShowSendToSupportMessage(exceptionBase.Message, exceptionBase.ExceptionDetails);
}
catch (System.Exception ex)
{
UILayerException uiLayerException = new UILayerException(ex, ExceptionSeverity.Error);
Common.Generic.ShowSendToSupportMessage(uiLayerException.Message, uiLayerException);
}
return dtReturn;
}
Comments
Post a Comment