繁体   English   中英

将 2 个查询的结果添加到一个列表中,然后对其进行排序

Add results of 2 queries into a single list and then sort it

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在我的模型中,我有 2 个类: ParticipantCompanyParticipantPerson它们都继承自Participant并具有字符串属性.Name 他们也都意识到需要他们拥有.Name IParticipant

public interface IParticipant 
{
    public string Name { get; set; }
}

public class ParticipantCompany : Participant, IParticipant
{
    public ParticipantCompany():this(false, "","","","") { }
    public ParticipantCompany (bool isclient) : this(isclient, "","","","") { }
    public ParticipantCompany(bool isclient, string name, string address, string inncompany, string ogrn) : base(isclient, SubjectType.Company)
    {
        Name = name;
        Address = address;
        InnCompany = inncompany;
        Ogrn = ogrn;
    }
    public string InnCompany { get; set; }
    public string Ogrn { get; set; }
}
public class ParticipantPerson : Participant, IParticipant
{
    public ParticipantPerson() : this(false,"","","","") { }
    public ParticipantPerson(bool isclient) : this(isclient, "", "", "", "") { }
    public ParticipantPerson(bool isclient, string name, string address, string innperson, string ogrnip) : base(isclient, SubjectType.Person) 
    {
        Name = name;
        Address = address;
        InnPerson = innperson;
        Ogrnip = ogrnip;
    }
public string InnPerson { get; set; }
    public string Ogrnip { get; set; }
}
public abstract class Participant
{
    public Participant(bool isclient, SubjectType Type,  string name, string address) 
    { 
        SubjType = Type;
        IsClient = isclient;
        Name = name;
        Address = address;
    }

    public Participant(bool isclient, SubjectType Type ) : this(isclient, Type, "","")
    {

    }
    public int Id { get; set; }
    public  SubjectType SubjType { get; private set; }
    public bool IsClient { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }

    public List<LegalCase> Cases { get; set; } = new List<LegalCase>();

}

这是模型本身:

class CaseContext : DbContext
{
    public DbSet<ParticipantCompany> Companies{ get; set; }
    public DbSet<ParticipantPerson> Persons { get; set; }
    public DbSet<LegalCase> Cases { get; set; }
    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlite("Data Source=Clients.db");

}

我想要做的是查询所有Company和所有Person ,将结果合并到一个列表中,然后按.Name对列表进行排序。

        using(var db = new CaseContext())
        {
            var companies = db.Companies.ToList();
            var persons = db.Persons.ToList();
            //Cant convert from System.Collections.
            //Generic.List<Magna.CaseModel.ParticipantPerson> to 
            //System.Colleciton.Generic.IEnumerable<Magna.CaseModel.ParticipantCompany>
            List<IParticipant> participants = companies.AddRange(persons);

        }   
1 个回复

我们可以将所有公司和个人合并到一个列表中,如下所示:

//store actual data in below two variables
List<ParticipantPerson> participantPersons = new List<ParticipantPerson>();
List<ParticipantCompany> participantCompanies = new List<ParticipantCompany>();

//Merge them using Linq and anonymous types
var mergedList = participantPersons.Select(pp => new { Id = pp.Id, SubjType = pp.SubjType, IsClient = pp.IsClient, Name = pp.Name, Address = pp.Address,  InnPerson = pp.InnPerson, Ogrnip = pp.Ogrnip, InnCompany = (string)null, Ogrn = (string)null }).ToList();
mergedList.AddRange(participantCompanies.Select(pc => new {Id = pc.Id, SubjType = pc.SubjType, IsClient = pc.IsClient, Name = pc.Name, Address = pc.Address, InnPerson = (string) null, Ogrnip = (string) null, InnCompany = pc.InnCompany, Ogrn = pc.Ogrn}));
        

或者我们也可以创建一个具有上述所有匿名类型属性的新类,并在 Select 查询中使用该类的对象而不是匿名类型。

1 将文件中的数据添加到列表以进行排序

我的文本文件包含一些整数值,如下所示: 我想将它们添加到列表中,然后对其进行排序并打印排序后的列表。 我尝试过类似的东西: 但是我遇到了一个错误: 另外,当我检查列表而不排序时,它是这样的: 我实际上对python很新。 因此,如果有人可以用解决方案解释整个案 ...

2015-03-01 09:15:22 2 33   python
3 C#通过另一个列表对列表进行排序,然后将未找到的列表添加到列表的末尾

我有一个值列表,用于对另一个值列表进行排序,但是我一直遇到的问题是,如果删除要排序的两个值,则需要对值列表中的两个值进行排序丢失了这两个值,因为在有序值列表中找不到它。 这是我尝试的例子 尝试1 大学是列表,orderedUniversity是模型列表,listOrdered ...

4 添加到列表中时对日期列表进行排序的最快方法

我正在写类似于任务计划程序的东西。 我有两组任务,其中一些是固定的(为他们指定了开始日期和结束日期和时间),而另一些则没有固定的(给他们指定了开始日期和时间以及持续时间)。 非固定任务受固定任务的影响,因此,如果非固定任务被固定任务重叠,则非固定任务的持续时间将增加重叠量。 我从元 ...

5 在将项目添加到列表之前,如何按字母顺序对其进行排序?

我有一项作业,应该在一行中找到每个单词,然后将该单词添加到列表中。 然后,还有另一个与单词列表相对应的列表,但是该列表将说明单词在文本中出现的次数。 我已经完成了那部分。 但是,我找不到一种方法,可以将新找到的单词与列表中的单词进行比较,并找到按字母顺序将其插入列表中的索引。 我知道 ...

6 添加到列表,然后对vs FindLastIndex进行排序,然后插入

我有对属性排序的项目列表。 我想将另一个项目添加到列表中,但仍获得排序列表。 我看到2种简单的方法可以做到这一点,但是哪个更快/更好? 将项目添加到列表,然后对列表进行排序或 使用FindLastIndex,然后在索引+ 1上插入项目 还是我不知道的另一种方式? ...

2017-05-24 07:15:14 2 63   c#/ list
8 根据值对python中的字典列表进行排序,并将排序后的对象添加到新列表中

我有一个字典列表。每个字典都有两个在排序时要考虑的键值。一个是“ col” ,另一个是“ row” 我想要的是 对于每个“行”键,我想获取所有对象并将其按“ col”的值进行排序。最终列表应明智地将所有对象“行”并按“ col”进行排序 例如 对于值为1的“行”键,我想获 ...

9 使用特定方法对添加到列表中的对象进行排序

我正在尝试对已经添加到列表中的项目进行排序,添加到列表框中后,该列表会出现在列表框中。 (我利用了继承-车辆类(基本类)以及汽车,卡车和摩托车是派生类)。 问题是-我收到了一种排序方法,必须遵循该方法(或必须使用的排序方法)对列表框中显示的添加项进行排序。 有人可以在我的主要表格中解释 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM