如何在第二组中的第一组等号id记录中创建set contains id记录?

时间:2015-04-25 15:36:13

标签: c#

在数据库中,我有两个表:

public partial class PersonOne
{
    public int id { get; set; }
    public string name { get; set; }
    public string surname { get; set; }
}

public partial class PersonTwo
{
    public int id { get; set; }
    public string firstname { get; set; }
    public string lastname { get; set; }
}

我想填写我的套装:

public class PersonOnePersonTwo
{
    public int PersonOneId { get; set; }
    public int PersonTwoId { get; set; }
}

其中 PersonOne.name == PersonTwo.firstname&& PersonOne.surname == PersonTwo.lastname 但我不知道如何做到这一点 - 因为下面的代码并不高效而且速度很慢:

    List<PersonOne> personOneList = new List<PersonOne>();
    List<PersonTwo> personTwoList = new List<PersonTwo>();

    List<PersonOnePersonTwo> personOnePersonTwoList = new List<PersonOnePersonTwo>();

foreach (PersonOne personOne in personOneList)
{
    foreach(PersonTwo personTwo in personTwoList.Where(x => x.firstname == personOne.name && x.lastname == personOne.surname).ToList())
    {
        personOnePersonTwoList.Add(new PersonOnePersonTwo
            {
                PersonOneId = personOne.id,
                PersonTwoId = personTwo.id
            });
    }
};

2 个答案:

答案 0 :(得分:0)

试试这个:

"query": {
  "bool": {
    "must": { "match": { "id": "1" }} ,
    "must": { "match": { "tags.name": "a1"}}
   }
}

答案 1 :(得分:0)

我会选择:

    var personOnePersonTwoList = new List<PersonOnePersonTwo>();

    foreach (var personOne in personOneList)
    {
        personOnePersonTwoList = personTwoList.Where(x => x.firstname.Equals(personOne.name, StringComparison.OrdinalIgnoreCase) && 
                                                          x.lastname.Equals(personOne.surname, StringComparison.OrdinalIgnoreCase))
                                              .Select(x => new PersonOnePersonTwo {PersonOneId = personOne.id, PersonTwoId = x.id}).ToList();
    };

作为旁注:在比较字符串时使用Equals更方便。