C# 由于同一个键有多个条目,因此生成具有Linq给定错误的组合框
我试图从TBLACCOMODION获取所有Zipcodes的列表,并将其放入组合框中 e、 g.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()。但它不
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;
}