Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Linq从另一个对象类型的列表创建一个对象类型的列表_Linq_Linq To Objects - Fatal编程技术网

使用Linq从另一个对象类型的列表创建一个对象类型的列表

使用Linq从另一个对象类型的列表创建一个对象类型的列表,linq,linq-to-objects,Linq,Linq To Objects,如果我有A类和B类课程: public class A { public int TotalCount; public string Title; } public class B { public int Count; public string Title; } 我有一个实例列表a实例,使用Linq创建和填充类型B列表的最有效方法是什么 var list = from a in TableA select new B { Count =

如果我有A类和B类课程:

public class A
{
    public int TotalCount;
    public string Title;
}

public class B
{
    public int Count;
    public string Title;
}
我有一个实例列表a实例,使用Linq创建和填充类型B列表的最有效方法是什么

var list = 
  from a in TableA
  select new B {
    Count = a.TotalCount,
    Title = a.Title
  };
您可以在select子句中新建一个B实例,并使用C3.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有点多余。有时我用它来表达自己的观点,其他人说这是绝对必要的。尽管如此,列表对象本身是类B的IQueryable


然后,您可以在链的更上层调用FetchAllOfClassB,并使用IQuerable。它非常流畅,而且效率很高。

嗯,从我的头上往下看,所以可能会有错误!:

列表=从列表a中选择新的Ba.count,a.title

也许能奏效

List<B> listB = listA.Select(a => new B()
   {
        Count = a.TotalCount,
        Title = a.Title
   }).ToList();

与eduncan的解决方案相同,但语法不同。你自己选吧。

你的问题不清楚。。。A和B之间的关系是什么?本质上它们代表相同的东西。在我的实际案例中,A是在我创建一个linqtosql类并向其添加一个表时由linqtosql生成的一个类。因为类A具有Linq和Linq到Sql的依赖性,所以我不想将其公开给我的应用程序,所以我创建了没有依赖性的类B。所以我需要从一个a类实例列表中填充一个B类实例列表+谢谢各位。也增加了你的评论是否有一种方法可以从listA中过滤出值,这样listB就不需要拥有listA中的所有项?@user20358是的,LINQ有一个Where函数。在ToList之前,您可以调用如下内容:。Wherew=>w.TotalCount>5,然后调用.ToList;