1

如何通过仅引用单个列从数据库中获取不同的值。

例如,在下面的给定数据中,结果将是......请参见下面的示例。

给定数据

Prospect    Values
1            null
1            null
2            2.1
2            2.2
2            2.3
3            3.1
3            3.2
4            4.1
4            4.2

结果

Prospect    Values
1            null
2            2.1
3            3.1
4            4.1

不同的值是指前景列。这在 LINQ 中可行吗?

谢谢

RJ

4

3 回答 3

0

试试这个:(未经测试)

var q  = from row in rowList
         group row by row.Prospect into prospects
         select new { Prospect = prospects.Key, 
                      Value = prospects.First().Values };

假设rowList是某种IEnumerable<Row>,并且 Row 类型具有字段ProspectValues,等等。

于 2012-09-28T03:12:50.797 回答
0

这有效:

var results =
    values
        .ToLookup(x => x.Prospect, x => x.Value)
        .Select(x => new
        {
            Prospect = x.Key,
            Value = x.First()
        });

从此开始:

var values = new []
{
    new { Prospect = 1, Value = (double?)null },
    new { Prospect = 1, Value = (double?)null },
    new { Prospect = 2, Value = (double?)2.1 },
    new { Prospect = 2, Value = (double?)2.2 },
    new { Prospect = 2, Value = (double?)2.3 },
    new { Prospect = 3, Value = (double?)3.1 },
    new { Prospect = 3, Value = (double?)3.2 },
    new { Prospect = 4, Value = (double?)4.1 },
    new { Prospect = 4, Value = (double?)4.2 },
};

我得到这些结果:

结果

于 2012-09-28T03:26:49.837 回答
0

最好的方法是创建一个自定义IComparer并将其提供给Distinct方法。

我制作了一个通用版本,它采用 lambda 来实现比较。您还覆盖GetHashValue了首先检查的内容。在这种情况下,您可以只返回前景的比较。

于 2012-09-28T03:39:43.143 回答