Skip to main content

C# allow nullable value get from EF

You can get value from Entity framework which can allow null able and you can also perform filtering in your query.

  private static IQueryable<EmployeeInformation> ReportFilteringEmployeeInformations(Guid factoryId, Guid departmentId, Guid designationId, string empId,  
     string empName, Guid sectionId, Guid categoryEmpId, int? CategoryTypeID, Guid categorySalaryID, Guid blockID,string cardNo, PayrollEntities context)  
     {  
       var query =  
         from emp in context.vw_PIS_TblEmployeeGenInfo  
         join des in context.vw_PIS_TblEmployeeDesignation on emp.GDesignationInfoID equals des.GDesignationInfoID into  
           des_J  
         join dept in context.vw_PIS_tblDepartment on emp.GDepartmentID equals dept.GDepartmentID into dept_J  
         join sec in context.vw_PIS_TblSection on emp.SectionID equals sec.SectionID into sec_J  
         from des1 in des_J.DefaultIfEmpty()  
         from dept1 in dept_J.DefaultIfEmpty()  
         from sec1 in sec_J.DefaultIfEmpty()  
         select new EmployeeInformation  
         {  
           GEmployeeGenInfoID = emp.GEmployeeGenInfoID,  
           GFactoryID = emp.GFactoryID ?? Guid.Empty,  
           GDepartmentID = emp.GDepartmentID ?? Guid.Empty,  
           GDesignationInfoID = emp.GDesignationInfoID ?? Guid.Empty,  
           GSectionID = emp.SectionID ?? Guid.Empty,  
           GEmployeeCatID = emp.GEmployeeCatID ?? Guid.Empty,  
           CategoryEmpID = emp.CategoryEmpID,  
           GCategorySalaryID = emp.CategorySalaryID ?? Guid.Empty,  
           BlockID = emp.BlockID ?? Guid.Empty,  
           StrEmpID = emp.StrEmpID,  
           StrEmpCardNo = emp.StrEmpCardNo,  
           StrEmpName = emp.StrEmpName,  
           dtJoiningDate = emp.dtJoiningDate,  
           DtConfirmationDate = emp.DtConfirmationDate ?? DateTime.MaxValue,  
           strDesignationName = des1.StrDesignationName,  
           strDepartmentName = dept1.StrDepartmentName,  
           SectionName = sec1.SectionName,  
           CategoryTypeID = emp.CategoryTypeID,  
           GSalaryIncrementID = Guid.Empty,  
           dtIncrementDate = null,  
           dtEffectiveDate = null  
         };  
       /*********************************************************************/  
       // FILTER / where clause   
       if (factoryId != Guid.Empty)  
         query = query.Where(x => x.GFactoryID == factoryId);  
       if (departmentId != Guid.Empty)  
         query = query.Where(x => x.GDepartmentID == departmentId);  
       if (designationId != Guid.Empty)  
         query = query.Where(x => x.GDesignationInfoID == designationId);  
       if (!String.IsNullOrEmpty(empId))  
         query = query.Where(x => x.StrEmpID == empId);  
       if (!String.IsNullOrEmpty(empName))  
         query = query.Where(x => x.StrEmpName == empName);  
       if (sectionId != Guid.Empty)  
         query = query.Where(x => x.GSectionID == sectionId);  
       if (categoryEmpId != Guid.Empty)  
         query = query.Where(x => x.CategoryEmpID == categoryEmpId);  
       if (categorySalaryID != Guid.Empty)  
         query = query.Where(x => x.GCategorySalaryID == categorySalaryID);  
       if (blockID != Guid.Empty)  
         query = query.Where(x => x.BlockID == blockID);  
       if (!String.IsNullOrEmpty(cardNo))  
         query = query.Where(x => x.StrEmpCardNo == cardNo);  
       if (CategoryTypeID != null && CategoryTypeID != 0)  
         query = query.Where(x => x.CategoryTypeID == CategoryTypeID);  
       return query;  
     }  

Comments

Popular posts from this blog

C# run powershell script as administrator

Recently I was fetching a problem that I need to run a PowerShell script that will change TFS user Display name and SID. I was trying to run that script from C# that was not working due to TFS security update and TLS certificate. Using this code block I resolve the Issue. var newProcessInfo = new System.Diagnostics.ProcessStartInfo(); newProcessInfo.FileName = @"C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"; newProcessInfo.Verb = "runas"; // Define Run as administrator newProcessInfo.Arguments = script; //Define your powershell script newProcessInfo.UseShellExecute = false; newProcessInfo.RedirectStandardOutput = true; // This will enable to read Powershell run output newProcessInfo.RedirectStandardError = true; Process proces = System.Diagnostics.Process.Start(newProcessInfo); proces.WaitForExit(); // I want to read the output string from powershell window StringBuilder output = new StringBuilder(); output.Append("Started"); while (!proces.St

mvc razor textboxfor change event change another textboxfor value

Based on value of Weight, Rate , CNF & AWB it will change the value of Freight , TTLCNF anfd TTLFright . Freight= Weight*Rate; TTLCNF  = Weight*CNF; TTLFright=  Freight+ TTLCNF  + AWB; @Html.TextBoxFor(model => model.Weight, new { onChange="return GetWight(this);"}) @Html.TextBoxFor(model => model.Rate, new { onChange="return GetWight(this);"})/Kg @Html.TextBoxFor(model => model.Freight, new {disabled = "disabled" , @readonly = "readonly" ,onChange="return GetTTLFright(this);"}) @Html.TextBoxFor(model => model.CNFPK, new { onChange="return GetCNFPK(this);"}) @Html.TextBoxFor(model => model.TTLCNF, new {disabled = "disabled" , @readonly = "readonly",onChange="return GetTTLFright(this);" }) @Html.TextBoxFor(model => model.AWB, new { onChange="return GetTTLFright(this);"}) and script <script> function GetW

ASP.NET MVC razor SAP Crystal report

Crete a new project: Add a aspx Master Page Create a new folder Reports and 2 sub folder crystal & crystalviewer Now add a web form page in crystalviewer  folder. Add the master page namespace in your web form page. MasterPageFile ="~/Views/Shared/ReportSite.Master" Replace your web form by this code < asp : Content ID ="Content1" ContentPlaceHolderID ="ContentPlaceHolder1" runat ="server">      </ asp : Content > Now go to design mode of your web form drag & drop the crystal report viewer in your web form. After that your page will be look look like this. Replace the code: < CR : CrystalReportViewer ID ="EmployeeList" runat ="server"   HasCrystalLogo ="False"     AutoDataBind ="True"   Height ="50px"   EnableParameterPrompt ="false" EnableDatabaseLogonPrompt