【发布时间】:2015-01-12 20:32:11
【问题描述】:
我有以下情况:
public class Term{
private int _family;
public void setFamily(int family){
_family = family;
}
public int getFamily(){
return _family
}
}
public class Document{
private List<Term> _terms_in_document;
public void addTerm(Term t){
_terms_in_document.add(t);
}
}
在不同的班级...
Term t1 = new Term();
t1.setFamily(1);
Term t2 = new Term();
t2.setFamily(1);
Term t3 = new Term();
t3.setFamily(1);
Document d1 = new Document();
d1.addTerm(t1);
d1.addTerm(t2);
d1.addTerm(t3);
Term t4 = new Term();
t4.setFamily(1);
Term t5 = new Term();
t5.setFamily(2);
Term t6 = new Term();
t6.setFamily(3);
Document d2 = new Document();
d2.addTerm(t4);
d2.addTerm(t5);
d2.addTerm(t6);
我需要使用 LINQ 来获取那些包含具有最多不同族的术语的文档。在我们的示例中,d2 将排在第一位,因为它的术语属于族 1、2 和 3。而 d1 必须排在第二位,因为它的所有术语都属于同一个族。到目前为止,我无法使用 linq 做到这一点,我相信没有它也可以做到,但它会是非常复杂且容易出错的代码。你能帮帮我吗..
【问题讨论】:
-
您过去有 Java 经验吗?为什么不使用会为您生成 getter setter 的自动属性?你全家的事情可能是“public int Family {get; set;}”
-
首先,您需要公开您添加到
Document类的Term项目。如果你想使用 Linq,最好通过实现IEnumerable<Term>
标签: c# linq linq-to-sql