【问题标题】:WebAPI - How can I remove case sensivity?Web API - 如何删除区分大小写?
【发布时间】:2019-03-19 18:50:16
【问题描述】:

我正在 WebAPI 中执行搜索功能,但它仅在根据 XML 数据正确时才返回该项目。例如,如果我写“牛奶”或“苹果”,它只会返回该项目。如果我写“milk”、“apple”或“aPpLe”,如何让它返回这些项目?

控制器:

   public IHttpActionResult GetItems(string name)
    {

        List<Item> allItems = GetAllItems();

        return Ok(allItems.Where(i => i.Name.Contains(name)));
    }

【问题讨论】:

标签: c# asp.net-web-api asp.net-web-api2


【解决方案1】:

您可以将字符串转换为小写。

public IHttpActionResult GetItems(string name)
{
    List<Item> allItems = GetAllItems();

    return Ok(allItems.Where(i => i.Name.ToLower().Contains(name.ToLower())));
}

我没有测试它,但它应该可以工作。

【讨论】:

  • 我没有测试它,但它应该可以工作。 no, it won't
【解决方案2】:

代码

 public IHttpActionResult GetItems(string name)
 {
     List<Item> allItems = GetAllItems();

     //We are ignoring the Case Sensitivity and comparing the items with name
     return Ok(allItems.Where(x => x.Name.Equals(name,StringComparison.CurrentCultureIgnoreCase));
}

【讨论】:

  • 等于不等于包含
  • @Selvin 我们正在使用 Equals(name,StringComparison.CurrentCultureIgnoreCase) 比较 allItems 列表中的单个项目,这将在内部忽略我名字的大小写。
  • 如果我有一个元素,我在我的列表中迭代并与名称(输入参数)进行比较,我可以使用等于比较包含,因为它会给我一个可靠的结果。例如:- 如果我有一个单词 Mapple,并且我在结果输出中使用包含苹果关键字,我将失败,因为我正在寻找苹果关键字而不是 Mapple。
  • 奶昔,苹果派...对于搜索,我们宁愿使用 contains... OP 在他的代码中也使用了 Contains...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
相关资源
最近更新 更多