namespace SelectManySample
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("===== MSDN 寫法 =====");
var msdn = DemoHelper.GetDate()
.SelectMany(
OwnerPet => OwnerPet.Pets,
(petOwner, petName) => new { petOwner, petName })
.Where(w => w.petName.StartsWith("S"))
.Select(ownerAndPet => new Result
{
PetOwner = ownerAndPet.petOwner.Name,
PetName = ownerAndPet.petName
});
DemoHelper.ShowData(msdn);
Console.WriteLine("===== 巢狀寫法 =====");
var Nested = DemoHelper.GetDate()
.SelectMany(p => p.Pets.Select(Pet => new Result { PetOwner = p.Name, PetName = Pet }))
.Where(w => w.PetName.StartsWith("S"));
DemoHelper.ShowData(Nested);
}
}
public class PetOwner
{
public string Name { get; set; }
public List<string> Pets { get; set; }
}
public class Result
{
public string PetOwner { get; set; }
public string PetName { get; set; }
public override string ToString()
{
return $"PetOwner:{PetOwner} - PetName:{PetName}";
}
}
public static class DemoHelper
{
public static List<PetOwner> GetDate()
{
return new List<PetOwner>() {
new PetOwner { Name="Higa",Pets = new List<string>{ "Scruffy", "Sam" } },
new PetOwner { Name="Ashkenazi",Pets = new List<string>{ "Walker", "Sugar" } },
new PetOwner { Name="Price",Pets = new List<string>{ "Scratches", "Diesel" } },
new PetOwner { Name="Hines",Pets = new List<string>{ "Dusty" } } };
}
public static void ShowData(IEnumerable<Result> Data)
{
foreach (var item in Data)
{
Console.WriteLine(item);
}
}
}
}
MSDN SelectMany 說明
SelectMany<TSource,TCollection,TResult>(IEnumerable<TSource>, Func<TSource,IEnumerable<TCollection>>, Func<TSource,TCollection,TResult>)簡單的用兩張圖片來輔助說明,方便了解
![[LINQ] SelectMany-3](https://farm2.staticflickr.com/1910/44955190752_b91c35b615_z.jpg)
![[LINQ] SelectMany-1](https://farm2.staticflickr.com/1942/30067291327_4e6079a219_z.jpg)
![[LINQ] SelectMany-2](https://farm2.staticflickr.com/1913/44955071382_3e4fa9354a_z.jpg)
![[SQL] 分頁 - TOP](https://farm2.staticflickr.com/1924/44951242101_eeb549591e.jpg)
![[SQL] Check 條件約束-1](https://farm2.staticflickr.com/1920/44909552151_862382c8cf_z.jpg)
![[SQL] Check 條件約束-2](https://farm2.staticflickr.com/1943/44859914442_1771778e88_z.jpg)
![[SQL] Check 條件約束-3](https://farm2.staticflickr.com/1950/31036972868_e6a7e68bfa_z.jpg)
![[SQL] Check 條件約束-1 - 複製](https://farm2.staticflickr.com/1962/44909552741_ac4582bd5c_z.jpg)
![[SSRS] 透過 ReportViewer 變更文字字型-10](https://farm2.staticflickr.com/1891/44588493452_b407819b8c_m.jpg)







%20%E6%8B%86%E8%A7%A3%E7%89%B9%E5%AE%9A%E7%AC%A6%E8%99%9F%E9%9A%94%E9%9B%A2%E5%AD%97%E4%B8%B2%E8%B3%87%E6%96%99.png)