【问题标题】:Linq to entities Cannot implicitly convert type 'string' to 'bool' linq queryLinq to entity 无法将类型“string”隐式转换为“bool”linq 查询
【发布时间】:2012-06-10 02:10:07
【问题描述】:

我正在开发 asp.net 应用程序,并且我创建了一个查询。我想更改它,以便如果选中复选框,则无法输入字段的空记录。我的查询如下所示:

var query = from d in context.data_vault.Where(d => states.Contains(d.STATE) 
    && counties.Contains(d.COUNTY)
    && cities.Contains(d.CITY)
    && zipCodes.Contains(d.ZIP)
    && areaCodes.Contains(d.AREA_CODE)
    && (d.MKTVAL > Convert.ToInt32(txtMarketValueFrom) && d.MKTVAL < Convert.ToInt32(txtMarketValueTo.Text))
    && (d.LTV > Convert.ToByte(txtLTVFrom.Text ) && d.LTV < Convert.ToByte(txtLTVTo.Text))
    && d.FHA_LIMIT_FLAG == chkFHA.Checked
    && (d.MTGAMT > Convert.ToInt32(txtMortgageFrom.Text) && d.MTGAMT < Convert.ToInt32(txtMortgageTo.Text))
    && (d.MTGDATE > Convert.ToDateTime(txtMortgageDateFrom.Text) && d.MTGDATE < Convert.ToDateTime(txtMortgageDateTo.Text))
    && d.LOAN_TYPE == drpMortgageLoanType.Text
    //&& (chkLenderName.Checked )  d.LENDERNAME != null  
    && lenderNames.Contains(d.LENDERNAME)
    //&& rdoexcludeSecondMortgage.Checked ? d.HE == "" : rdoexcludeSecondMortgage.Checked
    //&& d.HEAMT = txtSecondMortgageFrom.Text
    && d.HE_LOAN_TYPE == drpSecondMortgageLoanType.SelectedItem.Text
    && d.HELENDERNAME == txtSecondMortgageLenderName.Text
    && (d.AGE > Convert.ToByte(txtAgeFrom.Text) && d.AGE < Convert.ToByte(txtAgeTo.Text)
    //rdoNoPhone.Checked ? d.phones
    ))
    group d by new
    {
        d.STATE
    } into g
    select new
    {
        g.Key.STATE,
        Count = (Int32?)g.Sum(p => p.SCORE),
        Phone = (Int64?)g.Count(p => p.PHONE != null)
    };

GridView1.DataSource = query;
GridView1.DataBind();

如何更改它,以便如果选中 rdoNoPhone.Checked 单选按钮,则不包括带有 null 电话的记录

【问题讨论】:

  • 你没有省略 g.Key.STATE 中的字段名吗?
  • @BehnamEsmaili 抱歉没有找到你
  • in select new { g.Key.STATE , .... } 你没有在 g.Key.State 之前指定字段名。
  • @BehnamEsmaili 如何根据 rdoNoPhone.checked 状态选择所有记录?
  • @BehnamEsmaili 我想取消注释这些 //&& (chkLenderName.Checked ) d.LENDERNAME != null 和 //&& rdoexcludeSecondMortgage.Checked ? d.HE == "" : rdoexcludeSecondMortgage.Checked //&& d.HEAMT = txtSecondMortgageFrom.Text and //rdoNoPhone.Checked ? d.phones

标签: entity-framework linq-to-entities


【解决方案1】:

尝试像这样改变你的符号:

 var query = from d in context.data_vault.Where(delegate(ata_vault d){

  return states.Contains(d.STATE) 
    && counties.Contains(d.COUNTY)
    && cities.Contains(d.CITY)
    && zipCodes.Contains(d.ZIP)
    && areaCodes.Contains(d.AREA_CODE)
    && (d.MKTVAL > Convert.ToInt32(txtMarketValueFrom) && d.MKTVAL < Convert.ToInt32(txtMarketValueTo.Text))
    && (d.LTV > Convert.ToByte(txtLTVFrom.Text ) && d.LTV < Convert.ToByte(txtLTVTo.Text))
    && d.FHA_LIMIT_FLAG == chkFHA.Checked
    && (d.MTGAMT > Convert.ToInt32(txtMortgageFrom.Text) && d.MTGAMT < Convert.ToInt32(txtMortgageTo.Text))
    && (d.MTGDATE > Convert.ToDateTime(txtMortgageDateFrom.Text) && d.MTGDATE < Convert.ToDateTime(txtMortgageDateTo.Text))
    && d.LOAN_TYPE == drpMortgageLoanType.Text
    //&& (chkLenderName.Checked )  d.LENDERNAME != null  
    && lenderNames.Contains(d.LENDERNAME)
    //&& rdoexcludeSecondMortgage.Checked ? d.HE == "" : rdoexcludeSecondMortgage.Checked
    //&& d.HEAMT = txtSecondMortgageFrom.Text
    && d.HE_LOAN_TYPE == drpSecondMortgageLoanType.SelectedItem.Text
    && d.HELENDERNAME == txtSecondMortgageLenderName.Text
    && (d.AGE > Convert.ToByte(txtAgeFrom.Text) && d.AGE < Convert.ToByte(txtAgeTo.Text)
    && rdoNoPhone.Checked ? d.PHONE!= null : true
    })
    group d by new
    {
        d.STATE
    } into g
    select new
    {
        g.Key.STATE,
        Count = (Int32?)g.Sum(p => p.SCORE),
        Phone = (Int64?)g.Count(p => p.PHONE != null)
    };

【讨论】:

  • 你修改了什么部分?我应该尝试这样的事情吗 &&(rdoNoPhone.Checked == true || d.PHONE!= null)
  • 你想在这里做什么?是这个吗 ? : 如果 rdoNoPhone.Checked == true 那么你的 d.Phone 不应该为空?是吗?
  • 是的,我希望如果 rdoChecked == true 则只应提取 phone null 的记录,因此添加 &&(rdoNoPhone.Checked == false|| d.PHONE!= null) 将确保这一点?
  • 亲爱的@DotnetSparrow 让我们逐步解决问题。首先注释掉所有 AND ed 条件,直到确保您的代码在最小条件下运行良好,然后取消注释每一行并查看导致错误的行。然后发布该行这里。谢谢。
  • 我已经编辑了这一行检查。那么 rdoexcludeSecondMortgage 呢?
猜你喜欢
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多