LINQ’join’期待一个平等,但我想使用’contains’
发布时间:2020-05-27 20:54:23 所属栏目:MsSql 来源:互联网
导读:这是一个小小的拼写错误的项目,我正在修补,并希望得到一些投入,我可能做错了.我有一个“字典”的字母及其各自的分数和单词列表.我的想法是找到每个单词中的字母,并将得分加在一起. // Create a letter score lookupvar letterScores = new ListLetterScore {
|
这是一个小小的拼写错误的项目,我正在修补,并希望得到一些投入,我可能做错了.我有一个“字典”的字母及其各自的分数和单词列表.我的想法是找到每个单词中的字母,并将得分加在一起. // Create a letter score lookup
var letterScores = new List<LetterScore>
{
new LetterScore {Letter = "A",Score = 1},// ...
new LetterScore {Letter = "Z",Score = 10}
};
// Open word file,separate comma-delimited string of words into a string list
var words = File.OpenText("c:dictionary.txt").ReadToEnd().Split(',').ToList();
// I was hoping to write an expression what would find all letters in the word (double-letters too)
// and sum the score for each letter to get the word score. This is where it falls apart.
var results = from w in words
join l in letterScores on // expects an 'equals'
// join l in letterScores on l.Any(w => w.Contains(
select new
{
w,l.Score
};
任何帮助将不胜感激. 解决方法你不能,基本上 – 加入LINQ总是一个等等.你可以达到你想要的效果,但不能加入.这里有一个例子:var results = from w in words
from l in letterScores
where l.Any(w => w.Contains(l.Letter))
select new { w,l.Score };
我认为这是你试图用你的查询,虽然它不会给你的单词得分.对于完整的单词分数,我会建立一个字母从字母到得分,像这样: var scoreDictionary = letterScores.ToDictionary(l => l.Letter,l => l.Score); 然后,您可以通过将每个字母的得分相加来找到每个单词的得分: var results = from w in words
select new { Word = w,Score = w.Sum(c => scoreDictionary[c]) };
或不作为查询表达式: var results = words.Select(w => new { Word = w,Score = w.Sum(c => scoreDictionary[c]) }); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- sql-server – 使用SQL将XML结构转置/展平为列
- 被遗忘的SQL Server比较运算符谓词
- Rails bundle命令安装mysql gem包出错的解决方法
- mapping – 具有多个joinColumns的Doctrine 2 Ma
- sql-server-2008 – 与SQL Server分开安装Team F
- MSSQL 检查所使用的语句是否符合标准
- sql-server – 如何删除表上的所有默认约束约束
- Sqlserver 自定义函数 Function使用介绍
- sql-server – 在SQL Server中搜索存储为XML的数
- SQL Server实现将特定字符串拆分并进行插入操作的
热点阅读
