कृपया मुझे बताएं, मैं किसी वस्तु को IEnumerable<'a> प्रकार से कैसे लौटा सकता हूं? मेरे कोड को नेस्टेड वस्तुओं के साथ वस्तुओं की एक सूची वापस करनी चाहिए, उदाहरण के लिए:

[0] LG
{
  [0].LG G3
  [1].LG G4
}
[1] Xiaomi
{
...
}

अब मुझे एक संकलन त्रुटि मिलती है, और मुझे इसके लिए विधि का प्रकार नहीं मिल रहा है:

Error   CS0266  Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<<anonymous type: string Name, System.Collections.Generic.IEnumerable<ConsoleApp1.Phone> Phones>>' to 'System.Collections.Generic.IEnumerable<ConsoleApp1.Phone>'. An explicit conversion exists (are you missing a cast?)

मेरा कोड:

class Phone
{
    public string Name { get; set; }
    public string Company { get; set; }
}

class Program
    {
        static void Main(string[] args)
        {
            IEnumerable<Phone> GetInfo()
            {
                List<Phone> phones = new List<Phone>()
            {
                    new Phone {Name="Lumia 430", Company="Microsoft" },
                    new Phone {Name="Mi 5", Company="Xiaomi" },
                    new Phone {Name="LG G 3", Company="LG" },
                    new Phone {Name="iPhone 5", Company="Apple" },
                    new Phone {Name="Lumia 930", Company="Microsoft" },
                    new Phone {Name="iPhone 6", Company="Apple" },
                    new Phone {Name="Lumia 630", Company="Microsoft" },
                    new Phone {Name="LG G 4", Company="LG" }
            };

                var result = (from phone in phones
                        group phone by phone.Company into g
                        select new
                        {
                            Name = g.Key,
                            Phones = from p in g select p
                        });

                return result;
            }

            //my code with GetInfo()
        }
    }
0
just 26 नवम्बर 2021, 12:32

2 जवाब

सबसे बढ़िया उत्तर

आप अनाम वर्ग के बजाय नामांकित टपल, जैसे, (string company, Phone[] phones) वापस कर सकते हैं:

IEnumerable<(string company, Phone[] phones)> GetInfo() {
  ...

  return phones
    .GroupBy(phone => phone.Company)
    .Select(group => (group.Key, group.ToArray())); 
}  
3
Dmitry Bychenko 26 नवम्बर 2021, 12:37
बहुत धन्यवाद मैच, इसका काम!
 – 
just
26 नवम्बर 2021, 12:56

आपके द्वारा लौटाया जाने वाला IEnumerable फ़ोन के प्रकार का नहीं है बल्कि यह एक Dictionary<string,IEnumerable<Phone>> है

या PhoneInfo जैसे किसी अन्य वर्ग का उपयोग करें

public class Phone
{
    public string Name { get; set; }
    public string Company { get; set; }
}
public class PhoneInfo
{
    public string Name { get; set; }
    public List<Phone> Phones { get; set; } 
}

class Program
{
    static void Main(string[] args)
    {
        
        IEnumerable<PhoneInfo> GetInfo()
        {
            List<Phone> phones = new List<Phone>()
            {
                    new Phone {Name="Lumia 430", Company="Microsoft" },
                    new Phone {Name="Mi 5", Company="Xiaomi" },
                    new Phone {Name="LG G 3", Company="LG" },
                    new Phone {Name="iPhone 5", Company="Apple" },
                    new Phone {Name="Lumia 930", Company="Microsoft" },
                    new Phone {Name="iPhone 6", Company="Apple" },
                    new Phone {Name="Lumia 630", Company="Microsoft" },
                    new Phone {Name="LG G 4", Company="LG" }
            };

            var result = (from phone in phones
                          group phone by phone.Company into g
                          select new PhoneInfo
                          {
                              Name = g.Key,
                              Phones = (from p in g select p).ToList()
                          });

            return result;
        }

        //my code with GetInfo()
    }
}
3
Mucksh 26 नवम्बर 2021, 12:41
बहुत धन्यवाद मैच, इसका काम भी!
 – 
just
26 नवम्बर 2021, 12:56