2

ソースファイルとコピー先を表すクラスがあります。

public class SourceDestination
{
    public string Source { get; set; }
    public string Destination { get; set; }
}

のリストを作成しましたSourceDestination。このリストから、複数のソース ファイルが同じ宛先に送信され、複数の宛先が同じソース ファイルを受信するサブリストを見つけようとしています。

たとえば、ファイル A と B が宛先 C、D と E、ファイル F と G が宛先 C と D に移動する場合、A、B、F、G は 2 つの同じ宛先 C と D を共有します。

クラスはソースと宛先のペアであるためSourceDestination、Linq でこの種のセット操作をどのように実現できますか?

を使用して共通のソースと宛先をグループ化しようとしGroupByましたが、目的の効果が得られないようです。

StringBuilder sb = new StringBuilder();
var destinations = _sourceDestinations.GroupBy(sd => new { sd.Destination, sd.Source }).Select(g => g.First()).Select(sd => sd).ToList();

foreach (var destination in destinations)
{
    sb.AppendLine(destination.Source + " : " + destination.Destination);
    sb.AppendLine("");
}
4

1 に答える 1

4

GroupBy共有されたソースまたは宛先で移動を見つけるために使用できます。

var commonDestinations = list.GroupBy(move => move.Destination)
    .Where(group => group.Count() > 1); //not sure if you want this line; you can omit if desired

var commonSources = list.GroupBy(move => move.Source)
    .Where(group => group.Count() > 1);
于 2013-08-26T15:07:59.410 に答える