私はDTOクラスとEntity Frameworkを使用してリストに変換されたテーブルを持っています。C#とLINQは2つのリスト内の特定の項目を比較します
私のページが投稿されると、私のdtoのリストが送信されます。私がしたいのは、特定の要素に基づいてdtoリストとEFリストを比較するコードを書くことです。これは私のコードです...
MY DTO
public class DTOAddNewSpecialNeed
{
public long PersonId { get; set; }
public List<AddEditSpecialNeedList> SelectedSpecialNeeds { get; set; }
public List<AddEditSpecialNeedList> AvailableSpecialNeeds { get; set; }
public Guid LtcConcurrencyCheck { get; set; }
public class AddEditSpecialNeedList
{
public int PersonSpecialNeedId { get; set; }
public int SpecialNeedTypeId { get; set; }
public string SpecialNeedDescription { get; set; }
public DateTime? StopDate { get; set; }
public int SortOrder { get; set; }
}
}
... dtoSelectedListにアクセスするための私のコードは、DTOの私のリストは、私のdbSelectedListが私のEFオブジェクト(表)である...に渡されますされ私はそれに比べている。基本的には、dbに存在するすべてのdtoのリストを保持したい(dbselectelist、specialneedtypeidの一致とspecialneedtypeがisnt other(-12))。私もduplicateを持つことができます。このコードを記述するか、私はちょうど間違った私の比較をやっている以上のロジックがある
var matchedDtos = dtoSelectedList.SelectMany(dto => dbSelectedList
.Where(db => db.SpecialNeedTypeID == dto.SpecialNeedTypeId
&& dto.SpecialNeedTypeId != -12)).ToList();
var matchedOtherDtos = dtoSelectedList.SelectMany(dto => dbSelectedList
.Where(db => db.SpecialNeedTypeID == dto.SpecialNeedTypeId
&& dto.SpecialNeedTypeId == (int)SpecialNeedType.Other
&& db.OtherTypeText == dto.SpecialNeedDescription.Replace("Other: ", "").Trim())).ToList();
私のメソッドのシグネチャがSpecialNeedクラスがエンティティによって生成されたクラスです:?。
public List<SpecialNeed> NeedsCompareDtoToDb(List<DTOAddNewSpecialNeed.AddEditSpecialNeedList> dtoSelectedList, List<SpecialNeed> dbSelectedList
いただきました質問を取得しますか? – Liam
"これは動作しません、なぜですか?"どういう意味ですか?達成しようとしていることを説明できますか? –
== –