Jer*_*emy 20 linq linq-to-objects
如果我有A类和B类:
public class A
{
public int TotalCount;
public string Title;
}
public class B
{
public int Count;
public string Title;
}
Run Code Online (Sandbox Code Playgroud)
我有一个实例列表A实例,使用Linq创建和填充类型B列表的最有效方法是什么?
Dan*_*l M 34
List<B> listB = listA.Select(a => new B()
{
Count = a.TotalCount,
Title = a.Title
}).ToList();
Run Code Online (Sandbox Code Playgroud)
与eduncan的解决方案具有不同的语法相同.随便挑选..
edu*_*911 11
var list =
from a in TableA
select new B {
Count = a.TotalCount,
Title = a.Title
};
Run Code Online (Sandbox Code Playgroud)
您在select子句中新建了B实例,并使用C#3.0中的内联属性赋值功能分配属性.
将其内联映射的优点来自Linq语句的延迟执行.Linq将映射修改后的语句,并从IQueryable执行它.例如:
public class ClassA
{
public int TotalCount;
public string Title;
}
public class ClassB
{
public int Count;
public string Title;
}
public IQueryable<ClassB> FetchAllOfClassB()
{
var list =
from a in TableOfClassA
select new ClassB {
Count = a.TotalCount,
Title = a.Title
};
return list.AsQueryable();
}
Run Code Online (Sandbox Code Playgroud)
从技术上讲,这AsQueryable()有点多余.有时候我会用它来说明问题,其他人说这是绝对必要的.尽管如此,列表对象本身是ClassB的IQueryable.
然后你可以FetchAllOfClassB()进一步调用链,并使用IQuerable.它非常漂亮,高效.