如果我有类型为A和B的类:
public class A
{
public int TotalCount;
public string Title;
}
public class B
{
public int Count;
public string Title;
}
我有一个实例列表A实例,使用Linq创建和填充类型B的列表最有效的方法是什么?
发布于 2009-11-09 08:55:42
List<B> listB = listA.Select(a => new B()
{
Count = a.TotalCount,
Title = a.Title
}).ToList();
用不同的语法做与eduncan的解决方案相同的事情。你挑吧..。
发布于 2009-11-09 08:39:36
var list =
from a in TableA
select new B {
Count = a.TotalCount,
Title = a.Title
};
您可以在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();
}
从技术上讲,AsQueryable()
有点多余。有时我用它来表明观点,其他人说它是绝对必要的。尽管如此,list对象本身仍然是ClassB的IQueryable。
然后,您可以在链的更高位置调用FetchAllOfClassB()
,并使用IQuerable。它相当圆滑,而且效率很高。
发布于 2009-11-09 08:55:28
嗯,在我的脑海中(所以可能会有错误!):
List< B > = from a in listOfA select new B(a.count, a.title);
也许能行得通。
https://stackoverflow.com/questions/1698495
复制相似问题