このようなコレクションを持っています
public class Worksheet
{
public string WorksheetName { get; set; }
public string WorksheetId { get; set; }
public string TestSymbol { get; set; }
public string TestId { get; set; }
public List<Samples> Samples { get; set; }
public Worksheet()
{
Samples = new List<Samples>();
}
public Worksheet(string worksheetname, string worksheetid, string testsymbol, string testid)
{
WorksheetName = worksheetname;
WorksheetId = worksheetid;
TestSymbol = testsymbol;
TestId = testid;
Samples = new List<Samples>();
}
}
public class Samples
{
public string SampleId { get; set; }
public string SampleName { get; set; }
public Samples()
{
AssociatedSheets = new List<Worksheet>();
}
public Samples(string sampleid, string samplename)
{
AssociatedSheets = new List<Worksheet>();
SampleId = sampleid;
SampleName = samplename;
}
public List<Worksheet> AssociatedSheets { get; set; }
}
時計で見た時の構造が見える
- ワークシート 1
- サンプルA
- サンプル B
- ワークシート 2
- サンプル C
- サンプルA
私が望むのは、各サンプルで AssociatedSheets を設定して、それを含むワークシートを表示することです。
表示されるように
- ワークシート 1
- サンプルA
- ワークシート 1
- ワークシート 2
- サンプル B
- ワークシート 1
- サンプルA
- ワークシート 2
- サンプル C
- ワークシート 2
- サンプルA
- ワークシート 1
- ワークシート 2
- サンプル C
私はこのようなものを開発しましたが、明らかにうまくいきません。この後、各サンプルを個別に選択したいと思います。誰かがアドバイスできますか:
List<Samples> AllSamples = new List<Samples>();
//Step 4. Add possible worksheets to each sample.
foreach (Samples sample in sheets.SelectMany(x => x.Samples).ToList())
{
List<Worksheet> sampleitem = sheets.SelectMany(x => x.Samples.Select(y => y.SampleId) == sheets.SelectMany(k => k.Samples).Select(h => h.SampleId).ToList());
sample.AssociatedSheets = AssociatedSheets;
if (!AllSamples.Contains(sample))
AllSamples.Add(sample);
}