Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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# 在IEnumerable中选择其他非关键字段_C#_Asp.net_Repeater - Fatal编程技术网

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);