Linq从列表中返回一个带有选择的新对象

fli*_*lip 4 c# linq

我有以下对象结构:

public class A
{
    public string ID { get; set; }
    public IList<B> Values { get; set; }
}

public class B
{
    public string Code { get; set; }
    public string DisplayName { get; set; }
}

public List<A> IDs;
Run Code Online (Sandbox Code Playgroud)

我想使用Linq查询B并返回A的单个实例,其值为B中的单个元素.那可能吗?我目前用foreach做这个,但我认为Linq会更整洁.

foreach (A a in IDs)
{
    foreach (B b in a.Values)
    {
        if (b.Code == code)
        {
            return (new A()
            {
                ID = a.ID,
                Values = new List<B>()
                {
                    new B()
                    {
                        Code = b.Code,
                        DisplayName = b.DisplayName
                     }
                 }
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Abh*_*ain 6

试试这个:

IDs.Where(a=>a.ID = id)
   .Select(a => new A() 
   {
       ID = a.ID,
       Values = new List<B>()
       {
           new B() 
           { 
               Code = a.Values.First().Code, 
               DisplayName = a.Values.First().DisplayName 
           }
       }
    });
Run Code Online (Sandbox Code Playgroud)