【发布时间】:2012-03-18 18:28:03
【问题描述】:
我收到请求 URL 太长的问题,想知道是否有人对我如何改进现有内容有任何想法...
在这里,我返回一个属性 id 的列表
var propertiesAlreadySentQuery = Session.Query<Domain.ClientProperty>().Where(x => x.ClientId == clientid);
var propertiesAlreadySent = new int[propertiesAlreadySentQuery.Count()];
var t = 0;
foreach (var i in propertiesAlreadySentQuery)
{
propertiesAlreadySent[t] = i.PropertyId;
t++;
}
现在,我要做的是返回一个属性列表并过滤掉那些已经发送的属性(因此命名!)
var results = from p in Session.Query<Domain.Property>()
where
(p.Development.Latitude >= minLat && p.Development.Latitude <= maxLat) &&
(p.Development.Longitude >= minLong && p.Development.Longitude <= maxLong)
select p;
var propertiesNotSent = results.Where(x => !x.PropertyId.In<Int32>(propertiesAlreadySent));
问题是,propertiesAlreadySent 中返回的属性 ID 的数量可能非常多,而且我得到的请求 URL 太长。
任何想法我可以如何改进它以不遇到这个问题?
谢谢
【问题讨论】:
-
你的 results.Where() 是 IQueryable 还是 IEnumerable?
-
我希望能提供帮助,但我只使用了 Raven .NET API。作为一种解决方法,我认为您可以检索所有内容,然后在内存中进行过滤。我很想在这里看到答案...