Просто используйте text-shadow
, чтобы добавить рамку вокруг вашего значка галочки. Кроме того, вы можете улучшить читабельность, увеличив размер значков значков.
Просмотрите приведенный ниже фрагмент кода для практического примера использования text-shadow
и увеличения размера значка:
p:nth-child(1) span {color:green; text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; font-size: 50px;}
p:nth-child(2) span {color:yellow; text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;}
<p>I will display <span>✔</span></p>
<p>I will display <span>✔</span></p>
Вы можете использовать метод RemoveAll :
MyClass one; //initialize MyClass
list.RemoveAll(item => one.Value1 == item.Value1 && one.Value2 < item.Value2);
Если я правильно понял вопрос, создать уникальный набор из двух списков.
Для этого вы можете использовать следующие
Список списков1; Список list2;
Список list3 = list1.Except (list2)
Список 3 будет содержать уникальные элементы.
foreach(var item in toBeRemovedLItems) {
list.RemoveAll(one => one.Value1 == item.Value1 && one.Value2 < item.Value2);
}
Слишком поздно снова. Ну хорошо.
Может быть, вы пытаетесь сделать что-то подобное?
List<T> firstList;
List<T2> toBeRemovedItems;
List<T> finalList;
foreach(T item in firstList)
{
toBeRemovedItems = CheckIfWeRemoveThisOne(item.Number, item.Id);
if (toBeRemovedItems == null && toBeRemovedItems.Count() == 0)
finalList.Add(item);
}
Вот как мне удалось решить проблему с избавлением от дубликатов между List<ViewModel>
и List<Model>
. Я использовал функцию CheckIfWeRemoveThisOne
, чтобы проверить, принадлежит ли item.Number
какому-либо другому элементу, используя идентификатор в качестве определяющей характеристики. Если он нашел другой элемент (дубликат), а не пытался удалить его из первоначального списка (который я получал обратно List<Model>
, и мне сначала дали List<ViewModel>
в моей функции, поэтому у меня были сомнения что касается того, как я мог это сделать, так или иначе), я просто построил новый список - добавив в него результат, если он окажется нормальным.
You can use LINQ's Where method to filter out values that should not be a part of the list. The result is an IEnumerable
with the elements removed.
var res = list.Where(item => !(one.Value1 == item.Value1 && one.Value2 < item.Value2));
This will not updated the original List
instance but instead will create a new IEnumerable
with the values removed.
Я согласен с предложением Джареда отфильтровать определенные элементы, но похоже, что соединение
на Value1
было бы более эффективным подходом:
var res = from item1 in list
join item2 in toBeRemovedList
on item1.Value1 equals item2.Value1
where item1.Value2 >= item2.Value2
select item1;
Обновление: По-видимому, мне не удается понять прочитанное - новый подход:
var removeDict = toBeRemovedList.ToDictionary(i => i.Value1, i => i.Value2);
list.RemoveAll(item => {
int itemToRemoveValue2;
if(removeDict.TryGetValue(item.Value1, out itemToRemoveValue2))
return item.Value2 < itemToRemoveValue2;
return false;
});
Конечно, было бы еще лучше, если бы ваш список, который нужно удалить, можно было бы начать как словарь. В конечном счете, мы просто пытаемся сделать наш матч по Value1
более эффективным.