さて、私が持っているとしましょうList<car>
。各車にはList<part>
. 各パーツには がID
関連付けられています。私は に しか与えられておらずID
、それを含むpart
を見つけたいと思っています。これを見つける最良の方法は何ですか?car
part
car
15031 次
6 に答える
15
LINQではどうですか?
List<Car> cars = ...
var carToFind = cars.FirstOrDefault(car => car.Parts.Any(part => part.Id == idToFind));
英語では、「目的の ID と一致する ID を持つ部品を持つ最初の車 (そのような車が存在しない場合は null) を見つけます。」
于 2012-07-27T17:07:10.060 に答える
5
var id = 123;
var cars = new List<Car>();
var theCar = cars.Single(
car => car.parts
.FirstOrDefault(part => part.Id == id) != null
);
于 2012-07-27T17:05:03.167 に答える
2
次のような LINQ クエリを実行できます。
// List<car> cars;
int id = 101;
var result = Cars.Where (c => c.parts.Where (p => p.ID == id).Any ());
于 2012-07-27T17:06:46.257 に答える
1
検索内で検索
List<car> cars = new List<Car>();
List<car> carWithParts = cars.Find(x => x.parts.Any(y => y.PartID=123));
これは、複数の車に同じ PartID が含まれている可能性がある場合に機能します。
于 2012-07-27T17:11:33.993 に答える
1
どうですか:
foreach(Car car in listOfCars)
{
if (car.parts.Contains(partID))
{
return car;
}
}
Edit2:ああ、あなたの車には partID のリストがあると誤解していました。
では、その場合は…
foreach(Car car in listOfCars)
{
foreach(Part part in car.parts)
{
if (part.id == partId)
{
return car;
}
}
}
Edit1:ユースケースによっては、パーツ ID から車にマップする「インデックス」を維持することも理にかなっている場合があります。何かのようなもの:
var partIDToCar = Dictionary<string, Car>();
車に部品を取り付けるときに、インデックスを更新します。
partIDToCar[partID] = car;
次に、車を取得するための簡単なチェックです。
if (partIDToCar.ContainsKey(partID))
{
return partIDToCar[partID];
}
于 2012-07-27T17:03:57.217 に答える
0
var thePart;
foreach (var part in list<parts>)
{
if (part.id = ID)
thePart = part;
}
foreach (var car in list<cars>)
{
if (car.Part = thePart)
return car;
}
于 2012-07-27T17:04:18.600 に答える