Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ и DISTINCT, проблема / 2 сообщений из 2, страница 1 из 1
25.07.2012, 11:22
    #37891754
Диклевич Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ и DISTINCT, проблема
Добрый день,
Есть файл со обменными курсами и датами в XML ( тут ). Хочу выбрать только даты (уникальные значения), а ставку для всех дней сделать равной 1.
пока есть вот что (VB.NET, форма Form1 и кнопка Button1)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Imports System.Net
Imports System.Xml
Imports System.String

Class Rates
    Public DayDate As String
    Public ExchRate As Double

    Public Sub New(ByVal _DayDate As String, ByVal _ExchRate As String)
        DayDate = _DayDate
        ExchRate = _ExchRate
    End Sub

End Class

Class RatesComparer
    Implements IEqualityComparer(Of Rates)

    Public Function Equals1(Rate1 As Rates, Rate2 As Rates) As Boolean Implements System.Collections.Generic.IEqualityComparer(Of Rates).Equals
        Return (CDate(Rate1.DayDate) = CDate(Rate2.DayDate))
    End Function

    Public Function GetHashCode1(Rate1 As Rates) As Integer Implements System.Collections.Generic.IEqualityComparer(Of Rates).GetHashCode
        Return Rate1.DayDate.GetHashCode()
    End Function

End Class

Public Class Form1
    Private Const ECB_URL As String = "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml"
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim doc = XDocument.Load(ECB_URL)
        Dim gesmes As XNamespace = "http://www.gesmes.org/xml/2002-08-01"
        Dim ns As XNamespace = "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"
        Dim Root = doc.Element(gesmes + "Envelope")
        Dim query = (From nodelist In Root.Elements(ns + "Cube").Elements(ns + "Cube").Descendants _
                    Where CDate(nodelist.Ancestors.Attributes("time").Last.Value) > CDate("2012-06-01") _
                    Order By nodelist.Ancestors.Attributes("time").Last.Value Ascending _
                    Select New With {.t = nodelist.Ancestors.Attributes("time").Last.Value, .r = CDbl(1)}).Distinct(New RatesComparer())
        Debug.Print(query.Count())
    End Sub
End Class


но тут бросает InvalidCastExpression на query. Я нагуглил, что надо привести query к типу Rates, но не знаю как - прошу подсказать.

и еще, как задекларировать переменную для query до использования?
что то типа
Код: vbnet
1.
2.
Dim query as ...
query = ...


Спасибо!
...
Рейтинг: 0 / 0
25.07.2012, 11:39
    #37891797
Диклевич Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LINQ и DISTINCT, проблема
уже сам разобрался
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim doc = XDocument.Load(ECB_URL)
        Dim gesmes As XNamespace = "http://www.gesmes.org/xml/2002-08-01"
        Dim ns As XNamespace = "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"
        Dim Root = doc.Element(gesmes + "Envelope")
        Dim query As List(Of Rates) = (From nodelist In Root.Elements(ns + "Cube").Elements(ns + "Cube").Descendants _
                    Where CDate(nodelist.Ancestors.Attributes("time").Last.Value) > CDate("2012-06-01") _
                    Order By nodelist.Ancestors.Attributes("time").Last.Value Ascending _
                    Select New Rates(nodelist.Ancestors.Attributes("time").Last.Value.ToString, CDbl(1))).ToList()

        Debug.Print(query.Distinct(New RatesComparer()).Count())
    End Sub
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ и DISTINCT, проблема / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]