首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不同计数的LINQ问题

具有不同计数的LINQ问题
EN

Stack Overflow用户
提问于 2011-03-16 18:55:28
回答 2查看 389关注 0票数 0

试着去了解出了什么问题,但我真的做不到。所以:

代码语言:javascript
复制
return dc.dictionaries.Select(
       d => new AdminDictionaryViewModel 
       { dictionary = d,
         WordQuantity = dc.interpretations.Where(
                        i => i.iddictionary == d.iddictionary).Count() });

这很好,但是如果我更改为:

代码语言:javascript
复制
return dc.dictionaries.Select(
       d => new AdminDictionaryViewModel
       { dictionary = d,
         WordQuantity = dc.interpretations.Where(
                        i => i.iddictionary == d.iddictionary)
                       .Distinct(new WordsInDictionaryDistinct()).Count() });

我的课是:

代码语言:javascript
复制
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();
    }
}

我有:

代码语言:javascript
复制
dictionary table

iddictionary | dictionary_name

代码语言:javascript
复制
word table

idword | word_name

代码语言:javascript
复制
interpretation table

idinterpretation | iddictionary | idword

我需要在每个字典中都有不同的idword,bcz,如果我在第一个查询中返回,可以有大约10个单词,idword = 15,但这是一个单词,而不是15个:

解释表

代码语言:javascript
复制
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()

但还是同样的错误。

真的,不知道该怎么办:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-16 19:16:33

问题是IEqualityComparer不能转换为SQL。

试着替换

代码语言:javascript
复制
.Distinct(new WordsInDictionaryDistinct())

使用

代码语言:javascript
复制
.Select(x => x.idword).Distinct()
票数 4
EN

Stack Overflow用户

发布于 2011-03-16 19:16:49

我认为您最好将查询更改为分组,而不是现在的方式,您可能也会获得更好的性能。

代码语言:javascript
复制
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()
        });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5330308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档