我需要使用包含多个逗号分隔资源的文本框值从数据库中获取记录 [英] I need to get records from database using a textbox value contains multiple comma seperated resources

查看:64
本文介绍了我需要使用包含多个逗号分隔资源的文本框值从数据库中获取记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从数据库中获取记录,使用文本框值包含多个逗号分隔的资源,如(DEO,DPO,PROGRAMMER),基于此每种资源类型,我需要将数据从数据库绑定到网格视图



i尝试了这个查询

I need to get records from database using a text box value contains multiple comma separated resources like (DEO,DPO,PROGRAMMER) based on this each resource type i need to bind data from database to grid view

i tried this query

var Obj_SalaryAndTaxInfo = (from p in t.Tbl_Designations where words.Contains(p.ResourceType) select p).FirstOrDefault();





但是在这种情况下,我只有一个记录



我尝试过:





but in this case i got only one record

What I have tried:

protected void RetriveInvoice_Click(object sender, EventArgs e)
{
    List<getsal> getsalaries = new List<getsal>();

    try
    {
        //int sequenceNumber = 5;
        //string id = string.Format("PT{0}", sequenceNumber.ToString().PadLeft(13, '0'));

        var Otsi_orders = (from p in t.Tbl_OtsiCreatedWorkOrders where p.WorkOrderNO == ddlWorkOrder.SelectedValue select p).FirstOrDefault();

        GetInvoiceOnMonth_Result Invoice_Month = t.GetInvoiceOnMonth(ddlWorkOrder.SelectedValue, DLMonth.Text, DLYear.Text).FirstOrDefault();
        if (Otsi_orders != null && Invoice_Month != null)
        {
            decimal SalaryPerDay=0;
            BtnPrintSalaryList.Visible = true;
            //code Added
            var resourceType = t.Tbl_HMWSSBWorkOrders.Select(a =&gt; a).Where(a =&gt; a.WorkOrderNO == ddlWorkOrder.SelectedValue).FirstOrDefault();
            var s = resourceType.Resource_Type;

            char[] delimiterChars = { ',' };
            string NewString = s;
            string strresource = NewString.TrimEnd(delimiterChars);

            string[] words = strresource.Split(delimiterChars);

            Tbl_Designations Obj_SalaryAndTaxInfo = new Tbl_Designations();
           // Obj_SalaryAndTaxInfo = (from p in t.Tbl_Designations where words.Contains(p.ResourceType) select p).FirstOrDefault();
            foreach (string item in words)
            {
                Obj_SalaryAndTaxInfo = t.Tbl_Designations.Select(x =&gt; x).Where(x =&gt; x.ResourceType == item).FirstOrDefault();
                ////Obj_SalaryAndTaxInfo = (from p in t.Tbl_Designations where words.Contains(p.ResourceType) select p).Single();
                 lblDesignationonpageload.Visible = true;
                Decimal SalaryPerresource = Convert.ToDecimal(Obj_SalaryAndTaxInfo.SalaryPerResource);
                SalaryPerDay = (SalaryPerresource / (Convert.ToDecimal(Invoice_Month.NumberofDaysInMonth)));

                Decimal finalPay = Convert.ToDecimal(Invoice_Month.Total_Days_Worked * SalaryPerDay);

                txtNumberofResources.Text = Otsi_orders.NumberOfrequiredResources.ToString();
                txtProvidedResources.Text = Otsi_orders.ProvidedResources.ToString();

                TxtSalary.Text = Obj_SalaryAndTaxInfo.SalaryPerResource.ToString();

                LblWorkedDays.Text = Invoice_Month.Total_Days_Worked.ToString();
                LblFinalPay.Text = Math.Round(Convert.ToDecimal(finalPay), 0).ToString();
                lblDesignation.Text = "Work Order For " + item;

                Random UniqueNumber = new Random();

                //***Taxes forinvoice calculattion

                // TxtInvoiceNo.Text = "OTSIPL/HMWSSB/" + DLMonth.SelectedValue + "-" + DLYear.SelectedValue + "/" + Convert.ToInt32(UniqueNumber.Next());

                TxtPanno.Text = Obj_SalaryAndTaxInfo.PANNO;
                TxtServiceTaxNo.Text = Obj_SalaryAndTaxInfo.ServiceTAXNO;
                txtEmployershareEPF.Text = Obj_SalaryAndTaxInfo.EPF;
                txtEmployershareESI.Text = Obj_SalaryAndTaxInfo.ESI;
                txtAgencyCommission.Text = Obj_SalaryAndTaxInfo.AgencyComission;
                txtServiceTAX.Text = Obj_SalaryAndTaxInfo.ServiceTax;
                TxtSbc.Text = Obj_SalaryAndTaxInfo.SBC;

                //** Taxes for print **//

                txtpono.InnerText = ddlWorkOrder.SelectedValue;

                txtprojectname.InnerText = Otsi_orders.Resources_Type;
                WoYear.InnerText = DateTime.Now.ToString("yy") + "-" + DateTime.Now.AddYears(1).ToString("yy");
                wono.InnerText = ddlWorkOrder.SelectedValue;
                DesignationType.InnerText = item;
                getsalaries = GetEmployeMotnhlySalary(SalaryPerDay,item);
            }

            Session["PerdaySal"] = SalaryPerDay;
            InvoiceTable.Visible = true;
            BtnGenerateInvoice.Visible = true;
            ddlWorkOrder.Enabled = false;
            DLMonth.Enabled = false;
            DLYear.Enabled = false;
            RetriveInvoice.Visible = false;
            BtnModifySearch.Visible = true;
            InVoiceTemplete.Visible = true;
            InvoiceGridView1.DataSource = getsalaries;
            InvoiceGridView1.DataBind();
            InvoiceGridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
            InvoiceGridView1.Visible = true;

          // var Obj_SalaryAndTaxInfo = t.Tbl_Designations.Where(p =&gt; words.Contains(p.ResourceType));
           // string strResourceType = Obj_SalaryAndTaxInfo.ResourceType

            // lblDesignationonpageload.Visible = true;
            //Decimal SalaryPerresource = Convert.ToDecimal(Obj_SalaryAndTaxInfo.SalaryPerResource);
            //var SalaryPerDay = (SalaryPerresource / (Convert.ToDecimal(Invoice_Month.NumberofDaysInMonth)));

            //Decimal finalPay = Convert.ToDecimal(Invoice_Month.Total_Days_Worked * SalaryPerDay);

            //txtNumberofResources.Text = Otsi_orders.NumberOfrequiredResources.ToString();
            //txtProvidedResources.Text = Otsi_orders.ProvidedResources.ToString();

            //TxtSalary.Text = Obj_SalaryAndTaxInfo.SalaryPerResource.ToString();

            //LblWorkedDays.Text = Invoice_Month.Total_Days_Worked.ToString();
            //LblFinalPay.Text = Math.Round(Convert.ToDecimal(finalPay), 0).ToString();
            //lblDesignation.Text = "Work Order For " + Otsi_orders.Resources_Type;

            //Random UniqueNumber = new Random();

            ////***Taxes forinvoice calculattion

            //// TxtInvoiceNo.Text = "OTSIPL/HMWSSB/" + DLMonth.SelectedValue + "-" + DLYear.SelectedValue + "/" + Convert.ToInt32(UniqueNumber.Next());

            //TxtPanno.Text = Obj_SalaryAndTaxInfo.PANNO;
            //TxtServiceTaxNo.Text = Obj_SalaryAndTaxInfo.ServiceTAXNO;
            //txtEmployershareEPF.Text = Obj_SalaryAndTaxInfo.EPF;
            //txtEmployershareESI.Text = Obj_SalaryAndTaxInfo.ESI;
            //txtAgencyCommission.Text = Obj_SalaryAndTaxInfo.AgencyComission;
            //txtServiceTAX.Text = Obj_SalaryAndTaxInfo.ServiceTax;
            //TxtSbc.Text = Obj_SalaryAndTaxInfo.SBC;

            ////** Taxes for print **//

            //txtpono.InnerText = ddlWorkOrder.SelectedValue;

            //txtprojectname.InnerText = Otsi_orders.Resources_Type;
            //WoYear.InnerText = DateTime.Now.ToString("yy") + "-" + DateTime.Now.AddYears(1).ToString("yy");
            //wono.InnerText = ddlWorkOrder.SelectedValue;
            //DesignationType.InnerText = Otsi_orders.Resources_Type;

            //GetEmployeMotnhlySalary(SalaryPerDay);
            //Session["PerdaySal"] = SalaryPerDay;
            //InvoiceTable.Visible = true;
            //BtnGenerateInvoice.Visible = true;
            //ddlWorkOrder.Enabled = false;
            //DLMonth.Enabled = false;
            //DLYear.Enabled = false;
            //RetriveInvoice.Visible = false;
            //BtnModifySearch.Visible = true;
            //InVoiceTemplete.Visible = true;
        }
        else
        {
            this.ClientScript.RegisterStartupScript(this.GetType(), "", "&lt;script&gt;alert('Timesheet is not Available for this work order on selected month & year')&lt;/script&gt;");
            txtEmployershareEPF.Text = " ";
            txtEmployershareESI.Text = " ";
            txtAgencyCommission.Text = "";
            txtServiceTAX.Text = " ";
            txtNumberofResources.Text = "";
            txtProvidedResources.Text = "";
            TxtSalary.Text = "";
            LblFinalPay.Text = "";
            LblWorkedDays.Text = "";
        }
    }
    catch (Exception ex)
    {
    }
}

推荐答案

.FirstOrDefault()设计给出恰好一个结果!

满足条件的第一个成功记录/值或该记录/值的默认值:通常 null 或零。



(顺便说一下:这段代码还有很多其他问题。有些只是效率低下,其他......)
The .FirstOrDefault() is designed to give exactly one result!
Either the first successful record/value that meets the condition or the default for that type of record/value: that's usually null or zero.

(By the way: There's plenty of other things wrong with this code. Some are just inefficiencies, others... )


这篇关于我需要使用包含多个逗号分隔资源的文本框值从数据库中获取记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆