powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ и DISTINCT, проблема
2 сообщений из 2, страница 1 из 1
LINQ и DISTINCT, проблема
    #37891754
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,
Есть файл со обменными курсами и датами в 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
LINQ и DISTINCT, проблема
    #37891797
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже сам разобрался
Код: 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
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ и DISTINCT, проблема
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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