试着去了解出了什么问题,但我真的做不到。所以:
return dc.dictionaries.Select(
d => new AdminDictionaryViewModel
{ dictionary = d,
WordQuantity = dc.interpretations.Where(
i => i.iddictionary == d.iddictionary).Count() });这很好,但是如果我更改为:
return dc.dictionaries.Select(
d => new AdminDictionaryViewModel
{ dictionary = d,
WordQuantity = dc.interpretations.Where(
i => i.iddictionary == d.iddictionary)
.Distinct(new WordsInDictionaryDistinct()).Count() });我的课是:
public class WordsInDictionaryDistinct : IEqualityComparer<interpretation>
{
public bool Equals(interpretation x, interpretation y)
{
return x.idword.Equals(y.idword) && y.idword.Equals(x.idword);
}
public int GetHashCode(interpretation obj)
{
return obj.idword.GetHashCode();
}
}我有:
dictionary table
iddictionary | dictionary_nameword table
idword | word_nameinterpretation table
idinterpretation | iddictionary | idword我需要在每个字典中都有不同的idword,bcz,如果我在第一个查询中返回,可以有大约10个单词,idword = 15,但这是一个单词,而不是15个:
解释表
idinterpretation | iddictionary | idword | meaning
1 1 1115 hello
2 1 1115 hi
3 1 1115 hi, bro
4 1 1116
5 1 1118 good bye
6 1 1118 bye-bye
7 2
8 2在第二个查询之后,我希望得到{d = 1,WordQuantity = 3},但是
不支持重载,用于查询运算符'Distinct'.
我试过了
.ToList<interpretation>().Distinct(new WordsInDictionaryDistinct()).Count()
但还是同样的错误。
真的,不知道该怎么办:
发布于 2011-03-16 19:16:33
问题是IEqualityComparer不能转换为SQL。
试着替换
.Distinct(new WordsInDictionaryDistinct())使用
.Select(x => x.idword).Distinct()发布于 2011-03-16 19:16:49
我认为您最好将查询更改为分组,而不是现在的方式,您可能也会获得更好的性能。
return (from d in dc.dictionaries
join i in dc.interpretations on d.iddictionary == i.iddictionary
group i by d into g
select AdminDictionaryViewModel()
{
dictionary = g.Key,
WorkQuantity = g.Distinct(o => o.idword).Count()
});https://stackoverflow.com/questions/5330308
复制相似问题