c# - Linq 查询组按权重
问题描述
AllWordIDsAndWeightings
是Dictionary<int, double>
出现在搜索查询中的单词的唯一 ID,以及它们相应的权重。
给定以下查询:
returnedObjectIDs = new List<int>(db.WordObjectMaps
.Where(c =>
c.ForObjectTypeID == TopicObjectTypeID
&& AllWordIDsAndWeightings.Select(w=> w.Key).ToList().Contains(c.WordID)
)
.GroupBy(c => c.ForObjectID)
.Select(c => c.Key)
);
我想修改它,以便:
group by 语句包含word frequency * word weighting
每个单词的总和。然后我可以按此值降序排序并获取最高n
记录。
这可能吗?
解决方案
returnedObjectIDs = new List<int>(db.WordObjectMaps
.Where(c =>
c.ForObjectTypeID == TopicObjectTypeID
&& AllWordIDsAndWeightings.ContainsKey(c.WordID)
)
.Select(c => new { Word = c, Weight = AllWordIDsAndWeightings[c.WordID])
.GroupBy(c => x.Word.Value * c.Weight) // replace with your condition
.Select(c => c.Key)
);
推荐阅读
- erlang - 为什么这个函数没有在 Erlang 中编译
- splunk - Splunk 查询中有关上次修改日期的排序问题
- asp.net - 仅给定会话 ID,如何访问 ASP.NET 会话状态?
- python-2.7 - OpenCV Python:如何在 calcHist 中使用轮廓作为掩码?
- java - 如何使用 Caffeine 缓存管理器测试内存缓存?(即缓存后获取缓存中的条目数,缓存逐出)
- android - 如何在android中增加每天的 Place Api 请求限制?
- r - mlr:测试 FailureModel 的最佳方法是什么?
- python - 无法使用请求解析来自网页的视频链接
- javascript - 如何在不使用位置属性的情况下重叠表格(td)文本
- wordpress - 带有请求批准表和用户页面上的批准检查的 Wordpress 插件