0

检索不同列值的最有效方法是什么。我有一个包含字段FormsIDProductLineDescription其他列的表。ProductLine表具有一对多的关系,表中的样本数据如下:

FormID ProdculineDesc
1      abc
2      abc
1      xyz
2      def
3      abc
3      xyz

我希望下拉列表中只有ProductLineDesc. 这是代码,

private void LoadProductLines(Models.SearchModel Model, xyzEntities Context)
{
    Model.ProductLine = Context.PRODUCTLINEs
        .OrderBy(T => T.FormsGuid).ToSelectList().Distinct();
}

这仍然给了我每一个ProductLineDesc,我如何只检索这些Distinct值。

4

2 回答 2

0

怎么样:

var distinctInfo = (from c in Context.PRODUCTLINEs
                           group by c.ProductLineDesc into result
    select new Model.ProductLine {
    ProductLineDesc = result.Key,
    FormID = result.Min(d=>d.FormID)
    });
于 2012-04-27T17:55:05.947 回答
0

这是一个带有自定义质量比较器的版本(带有示例):

public class UniqueProductLineDesc : IEqualityComparer<Product>
{
    public Boolean Equals(Product a, Product b)
    {
        if (Object.ReferenceEquals(a, b))
            return true;

        if (Object.ReferenceEquals(a, null) || Object.ReferenceEquals(b, null))
            return false;

        return String.Compare(a.ProductLineDesc, b.ProductLineDesc, true) == 0;
    }

    public Int32 GetHashCode(Product product)
    {
        if (Object.ReferenceEquals(product, null))
            return 0;

        return product.ProductLineDesc == null ? 0 : product.ProductLineDesc.GetHashCode();
    }
}

并实施:

private void LoadProductLines(Models.SearchModel Model, xyzEntities Context)
{
    Model.ProductLine = Context.PRODUCTLINEs
        .OrderBy(T => T.FormsGuid)
        .ToSelectList()
        .Distinct(new UniqueProductLineDesc());
}
于 2012-04-27T15:29:15.823 回答