2

私のシステムには 2 つの類似したオブジェクトがあります。

  • LeadImportViewModel
  • LeadGridViewModel

QtyDuplicatesコレクション内のフィールドに入力する必要があります。これにより、値が同一LeadImportViewModelである LeadGridViewModel コレクション内の対応するレコードの数が表示され ます。CompanyNameStripped

public class LeadImportViewModel
{
    public int Id { get; set; }
    public string CompanyName { get; set; }
    public string CompanyNameStripped { get; set; }
    public int QtyDuplicates{ get; set; }
}

public class LeadGridViewModel
{
    public int LeadId { get; set; }
    public string CompanyName { get; set; }
    public string CompanyNameStripped { get; set; }
}

コレクションは次のように作成されます。

var coll = (from t1 in db.Leads_Staging
                    select new LeadImportViewModel
                        {
                            Id = t1.Id,
                            CompanyName = t1.CompanyName,
                            CompanyNameStripped = t1.CompanyNameStripped,

                        });

LINQ/C# を使用してこれを行う最も効率的な方法は何でしょうか?

4

4 に答える 4

1

ForEachメソッドとCountメソッドを使用します。

List<LeadImportViewModel> leadImportViewModelList = new List<LeadImportViewModel>();
List<LeadGridViewModel> leadGridViewModelList = new List<LeadGridViewModel>();

leadImportViewModelList.ForEach(vm => vm.QtyDuplicates 
    = leadGridViewModelList.Count(
    gv => gv.CompanyNameStripped = vm.CompanyNameStripped));
于 2012-11-06T19:18:59.990 に答える
1

list.Select(a => a.CompanyNameStripped).Intersect(list2.Select(b => b.CompanyNameStripped).Count()

于 2012-11-06T19:21:55.927 に答える
1

あなただけが必要なようです:

var count = leadImports.Select(x => x.CompanyNameStripped))
                       .Intersect(leadGrids.Select(x => x.CompanyNameStripped)))
                       .Count();

または:

var names = new HashSet<string>(leadImports.Select(x => x.CompanyNameStripped));
var count = leadGrids.Count(x => names.Contains(x.CompanyNameStripped));
于 2012-11-06T19:18:36.407 に答える
0

試す

var coll = (from t1 in db.Leads_Staging
                select new LeadImportViewModel
                    {
                        Id = t1.Id,
                        CompanyName = t1.CompanyName,
                        CompanyNameStripped = t1.CompanyNameStripped,
                        QtyDuplicates = db.LeadGridViewModel.Count(
                                        gv => gv.CompanyNameStripped == t1.CompanyNameStripped)
                    });
于 2012-11-07T12:00:03.650 に答える