LINQ查询多级对象,这是不同于常规的SQL查询的情形。在SQL查询,由于面对的是关系形数据库,它所对应的对象也就是一个个有关系的表而已,而每个表都是一个二维结构。但是在实际项目的对象实体中,可能存在一个对象有多级属性,这种查询可以说是LINQ所特有的,为此LINQ新提供了SelectMany来处理这一过程。
SelectMany
其实就是使用多个from子句来映射不同层次的对象,看下面的例子。
string nameList1 = "操作系统 汇编语言";
string nameList2 = "论语 宋词赏析";
List<string> catalogs= new List<string>() { nameList1, nameList2 };
var query = from catalog in catalogs
from word in catalog.Split(' ')
select word;
foreach (string s in query)
Console.WriteLine(s);
/* This code produces the following output:
操作系统
汇编语言
论语
宋词赏析
*/