0

tblAccomodation からすべての郵便番号のリストを取得して、コンボボックスに入れようとしています。

例:
8630 - Veurne
8660 - De Panne
8670 - Koksijde

これは 2 つのテーブル間の関係です: tblCity.ID = tblAccomodation.CityID

TblCity には (ID、Zipcode、Name、UpName、StructCode) が含まれます TblAccomodation には (ID、CityID、Name、.....) が含まれます

もちろん、同じ CityID を持つ複数の宿泊施設があるため、DISTINCT() を使用しようとしました。しかし、それは機能していません。

public static Dictionary<int, string> getPostals()
{
    Dictionary<int, string> Zipcodes = new Dictionary<int, string>();

    var AllAccomodations = (from oAccomodation in new DBReservationDataContext().tblAccomodations
                          orderby oAccomodation.Name ascending
                          select oAccomodation).ToList();

    foreach (tblAccomodation item in AllAccomodations.Distinct())
    {
        Zipcodes.Add(item.CityID, clsCities.getCityInfo(item.CityID, "Zipcode") + ' ' + clsCities.getCityInfo(item.CityID, "UpName"));
    }
    return Zipcodes;
}

何を変更する必要がありますか?

4

2 に答える 2

1

Distinctオブジェクトを比較oAccomodationします。必要なのは CityID の比較です

すでにメモリ内にあるため、 morelinqDistinctByを使用できます。AllAccomodations

foreach (tblAccomodation item in AllAccomodations.DistinctBy(x=>x.CityID))

また

foreach (tblAccomodation item in AllAccomodations.GroupBy(x => x.CityID)
                                                 .Select(g => g.First()))
于 2012-08-24T09:28:03.200 に答える
0
    public static Dictionary<int, string> getPostals()
    {
        Dictionary<int, string> oZipcodes = new Dictionary<int, string>();

        DBReservationDataContext oDBConnection = new DBReservationDataContext();

        var vAllCities = (from oCity in oDBConnection.tblCities
                          where (from oAccomodation in oDBConnection.tblAccomodations
                                 select oAccomodation.CityID).Contains(oCity.ID)
                          select oCity).Distinct();

        foreach (tblCity item in vAllCities)
        {
            oZipcodes.Add(item.ID, clsCities.getCityInfo(item.ID, "Zipcode") + ' ' + clsCities.getCityInfo(item.ID, "UpName"));
        }
        return oZipcodes;
    }
于 2012-08-24T09:36:11.167 に答える