Информация о содержании и удалении в списке BsonItems в официальном драйвере C # - PullRequest
0 голосов
/ 07 марта 2011

Я запутался в содержании и удалении элементов в списке.Может кто-нибудь научить меня сказать несколько слов о pls?

items.Content (BsonItem) возвращает bool, если элемент соответствует (_id) или если элемент является BsonItem (того же типа)?

items.Удалить (BsonItem) удалить переданный и соответствующий BsonItem или удаляет первый BsonItem в найденной коллекции?

В следующих случаях:
Как узнать, существует ли уже BsonItem в моей коллекции?
Как я могу удалить BsonItem в коллекции, не зная позиции. ?

Я искал, чтобы передать BsonItem из одного списка в другой, основываясь на некоторых критериях.Спасибо

var itemtoReturn = items[RandomItem(items.Count())];
if (!show.Contains(itemtoReturn) && show.Count() < items.Count())
{
    returned.Add(itemtoReturn);
    //removed from the items
    items.Remove(itemtoReturn);
}

1 Ответ

0 голосов
/ 07 марта 2011

Я предполагаю, что вы хотели спросить, возвращает ли Items.Contains (BsonItem) логическое значение, если элементы соответствуют на основе вашего примера кода?

.Contains (BsonItem) проверит равенство на основе реализации BsonItemIEquatable.По умолчанию он будет искать тот же экземпляр BsonItem, предполагая, что BsonItem является ссылочным типом.

Если вы хотите проверить что-то вроде BsonItem.id == anotherBsonItem.id, вы можете использовать Where () вродеИтак:

items.Where(o => o.id == anotherItem.id);

Если вы не хотите реализовывать IEquatable самостоятельно, вы также можете использовать это для проверки существования:

items.Count(o => o.id == anotherItem.id) >= 1;

Sidenote: Если вы решили реализовать IEquatable,Вы также должны иметь дело с GetHashCode

...