gpt4 book ai didi

c# - 使用 Contains 搜索部分 linq 文本

转载 作者:太空宇宙 更新时间:2023-11-03 19:50:00 25 4
gpt4 key购买 nike

我正在尝试对相关实体的部分属性匹配进行文本搜索。

我的实体是:

public class TradeContact
{
[Key]
public int TradeContactId { get; set; }

public virtual ICollection<Region> Regions { get; set; }

}

public class Region
{
[Key]
public int RegionId { get; set; }
public virtual ICollection<TradeContact> TradeContacts { get; set; }
}

我的目标是,如果 TradeContact 具有以下区域:悉尼、布里斯类、 Darwin ,那么我应该能够搜索“Syd”以检索该 TradeContact 记录。

目前我正在这样搜索:

TradeContacts = TradeContacts
.Where(s => s.Regions.Select(x => x.Name.ToUpper())
.Contains(searchString.ToUpper()));

此代码找到完全匹配项,因此“Sydney”将返回我的 TradeContact,但它不适用于部分匹配项。

我做错了什么?

最佳答案

了解为什么当前方法不起作用很重要。

TradeContacts
.Where(s => s.Regions.Select(x => x.Name.ToUpper())
.Contains(searchString.ToUpper()));

如果将其翻译成人类语言,它将是:给我联系人,其中区域列表包含名称​​等于的区域搜索字符串。所以您使用的 Contains 不是 String.Contains,而是 IEnumerable.Contains:

var regionNames = new List<string>();
var match = regionNames.Contains(searchString);

如您所见,只有当区域名称​​等于您的搜索字符串时,它才会匹配。

TradeContacts.Where(s => s.Regions.
Any(x => x.Name.ToUpper().Contains(searchString.ToUpper()));

这个是不同的:给我所有联系人,其中任何区域都有名称包含 searchString。

关于c# - 使用 Contains 搜索部分 linq 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40603717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com