从linq c中包含fullname的字段中搜索firstname和lastname

 天地菲人间_984 发布于 2023-02-08 15:28

在我的Person表中,我有一个名为ps_fullname的字段,其中包含一个人的全名.在我的aspx页面中,我有一个搜索框来按名称过滤人.只要我只键入一个名称,它就可以正常工作.( 一个词).如果我输入两个名字(名字姓氏),结果为零.

这是我的linq声明

string[] namelist = txtName.text.Split(' ');

DatabaseContext db = new DatabaseContext();

var query = (from person in db.People
     where
     (dhaaira == 0 ? true : (dhaaira == null ? person.ps_default_dhaaira_id == null : person.ps_default_dhaaira_id == dhaaira)) &&
     (atoll == 0 ? true : (atoll == null ? person.PAddress.Island.il_atoll_id == null : person.PAddress.Island.il_atoll_id == atoll)) &&
     (island == 0 ? true : (island == null ? person.PAddress.ad_island_id == null : person.PAddress.ad_island_id == island)) &&
     (address == 0 ? true : (address == null ? person.ps_p_add_id == null : person.ps_p_add_id == address)) &&
     (string.IsNullOrEmpty(nic) ? true : person.ps_nic.Trim().ToLower() == nic.Trim().ToLower()) &&

     (string.IsNullOrEmpty(name) ? true : ( namelist.All( n => person.ps_fullname.ToLower().Contains(n.ToLower()))))
     // orderby orderBy
     orderby person.PAddress.ad_island_id, person.ps_p_add_id, person.ps_fullname
     select person).Skip(startRowIndex).Take(maximumRows).ToList();

我在这做错了什么?如果这太混乱了,你可以给出一个简单的例子,我可以使用多个单词过滤字符串字段.

1 个回答
  • 此代码按预期工作:

         string txtName = "hello wo";
         string[] namelist = txtName.Split(' ');
    
         string[] db = new string[] { "hello world", "hello dear"};
    
         List<String> results = db.Where(r => namelist.All( n => r.ToLower().Contains(n.ToLower()))).ToList();
    

    结果将包含一个项目 - "hello world".

    所以,我的猜测是你的输入无效.

    2023-02-08 15:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有