Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 由于同一个键有多个条目,因此生成具有Linq给定错误的组合框_C#_Linq_Distinct Values - Fatal编程技术网

C# 由于同一个键有多个条目,因此生成具有Linq给定错误的组合框

C# 由于同一个键有多个条目,因此生成具有Linq给定错误的组合框,c#,linq,distinct-values,C#,Linq,Distinct Values,我试图从TBLACCOMODION获取所有Zipcodes的列表,并将其放入组合框中 e、 g. 8630-Veurne 8660-De Panne 8670-Koksijde 这是两个表之间的关系: tblCity.ID=TBLACCOMODION.CityID TblCity包含(ID、Zipcode、Name、UpName、StructCode) TblAccomodation包含(ID、CityID、名称等) 当然,同一个CityID有多个住宿,所以我尝试使用DISTINCT()。但它不

我试图从TBLACCOMODION获取所有Zipcodes的列表,并将其放入组合框中

e、 g.
8630-Veurne
8660-De Panne
8670-Koksijde

这是两个表之间的关系: tblCity.ID=TBLACCOMODION.CityID

TblCity包含(ID、Zipcode、Name、UpName、StructCode) TblAccomodation包含(ID、CityID、名称等)

当然,同一个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;
}
publicstaticdictionary getPostals()
{
字典Zipcodes=新字典();
var allacmodations=(来自新DBReservationDataContext()中的OAcModation。tblAccomodations
OrderByOacModation.Name升序
选择oAccomodation).ToList();
foreach(allacmodations.Distinct()中的tblAccomodation项)
{
Zipcodes.Add(item.CityID,clsCities.getCityInfo(item.CityID,“Zipcode”)+“”+clsCities.getCityInfo(item.CityID,“UpName”);
}
返回Zipcodes;
}

我需要更改什么?

Distinct
比较
oAccomodation
对象,您需要的是比较CityID的

您可以使用,因为内存中已经有
allacomodations

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

publicstaticdictionary getPostals()
{
字典oZipcodes=新字典();
DBReservationDataContext oDBConnection=新的DBReservationDataContext();
var vAllCities=(来自oDBConnection.tblCities中的oCity
其中(来自oDBConnection.tblaccomdations中的oAccomodation)
选择oAccomodation.CityID).Contains(oCity.ID)
选择oCity).Distinct();
foreach(价值中的tblCity项目)
{
添加(item.ID,clsCities.getCityInfo(item.ID,“Zipcode”)+“”+clsCities.getCityInfo(item.ID,“UpName”);
}
返回oZipcodes;
}

这确实是一种可能性,但我刚刚切换了整个查询。我已经开始在tblCity中查询来自TBLACCOMODION的条件。这很好用。
foreach (tblAccomodation item in AllAccomodations.GroupBy(x => x.CityID)
                                                 .Select(g => g.First()))
    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;
    }