C# 在IEnumerable中选择其他非关键字段
我有一节课C# 在IEnumerable中选择其他非关键字段,c#,asp.net,repeater,C#,Asp.net,Repeater,我有一节课 public class AmenityShowtime { public String AmenityKey { get; set; } public String AmenityIcon { get; set; } public String shTimes { get; set; } } 最后,我希望有一个由以下嵌套类组成的结构: public class AmenityShowtime {
public class AmenityShowtime
{
public String AmenityKey { get; set; }
public String AmenityIcon { get; set; }
public String shTimes { get; set; }
}
最后,我希望有一个由以下嵌套类组成的结构:
public class AmenityShowtime
{
public String AmenityKey { get; set; }
public String AmenityIcon { get; set; }
public String shTimes { get; set; }
}
// Movie Class
public class theMovie
{
public String Movie_title { get; set; }
public String Rating { get; set; }
public String RunTime { get; set; }
public List<theAmenities> amens { get; set; }
}
public class theAmenities
{
public String AmenityName { get; set; }
public String AmenityIcon { get; set; }
public List<theTimes> times { get; set; }
}
public class theTimes
{
public String timepref { get; set; }
}
我一定错过了什么,提前谢谢你如果你想在分组中加入修正案,那么一种方法是:
var query = amShow.GroupBy(ams => new {ams.AmenityKey, ams.AmenityIcon},
ams => ams.shTimes);
请注意,现在确实需要var
关键字,因为这是一个i分组
(这将基于键和图标进行分组,如果键相同,我假设图标相同,因此这与仅按键分组基本相同)
现在你可以做了
foreach (var grp in query)
{
theAmenities thisMovieAmenities = new theAmenities();
thisMovieAmenities.AmenityName = grp.Key.AmenityKey;
thisMovieAmenities.AmenityIcon = grp.Key.AmenityIcon;
...
如果要避免匿名类型,还可以在分组中创建类成员:
IEnumerable<IGrouping<theAmenities,string>> query = amShow.GroupBy(
ams => new theAmenities(){AmenityKey = ams.AmenityKey, AmenityIcon = ams.AmenityIcon},
ams => ams.shTimes);
IEnumerable query=amShow.GroupBy(
ams=>newtheamanies(){amenditykey=ams.amenditykey,amendityicon=ams.amendityicon},
ams=>ams.shTimes);
但这需要类TheAmanies实现IEquatable
接口,以允许GroupBy运算符将具有相同键的所有TheAmanies对象识别为相等。
如果改用匿名类型,这将自动工作。但这种方法的优点是,如果确实可能有多个项目具有相同的键但图标不同,您可以让您的iQuatable忽略修正图标
var query = amShow.GroupBy(ams => new {ams.AmenityKey, ams.AmenityIcon},
ams => ams.shTimes);
foreach (var grp in query)
{
theAmenities thisMovieAmenities = new theAmenities();
thisMovieAmenities.AmenityName = grp.Key.AmenityKey;
thisMovieAmenities.AmenityIcon = grp.Key.AmenityIcon;
...
IEnumerable<IGrouping<theAmenities,string>> query = amShow.GroupBy(
ams => new theAmenities(){AmenityKey = ams.AmenityKey, AmenityIcon = ams.AmenityIcon},
ams => ams.shTimes);