gpt4 book ai didi

linq - 执行 Linq to Sitecore 查询时获取 Stack Overflow

转载 作者:行者123 更新时间:2023-12-01 11:42:17 25 4
gpt4 key购买 nike

我遇到了一个有趣的 Linq to Sitecore 问题。我有这样的情况,我有一个人员目录和一个位置目录,它们都存储在 Sitecore 中。我正在尝试编写一个搜索功能,让我可以搜索附近的人。一个问题是人们可能与多个位置相关联。

到目前为止,方法是查找附近的位置,获取他们的 ID,然后找到与这些位置关联的所有人员。

这看起来大致是这样的:

var locations = GetNearbyLocations(lat, long, radius) // returns a list of short ID's 

var searchPredicate = PredicateBuilder.True<SearchResultItem>();
var locationsPredicate = PredicateBuilder.False<SearchResultItem>();

foreach (var location in locations)
{
locationPredicate = locationPredicate.Or(x => x["location"] == location);
}

searchPredicate = searchPredicate.And(locationPredicate);
searchPredicate = searchPredicate.And(sri => sri.TemplateId == personTemplateId);

using (var context = index.CreateSearchContext())
{
var peopleReults = context.GetQueryable<SearchResultItem>.Where(locationPredicate).GetResults();
}

如果 GetNearbyLocations 返回一组相对较小的位置,则上述方法非常有效。一旦超过 150 个左右,对 GetQuerable 的调用将导致堆栈溢出。

最佳答案

您或许可以使用位置数组并执行包含操作。

 locationPredicate.And(x=>locations.Contains(x["location"]));

如果你从中得到一个很大的错误,我会发布一些你可以使用的 lambda 表达式。

关于linq - 执行 Linq to Sitecore 查询时获取 Stack Overflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30871850/

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