Вы не можете, в принципе - Join
в 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]) });