Я знаю, что исходный вопрос определил HTML + CSS, но это конкретно не сказало никакой javascript;)
Попытка сохранить css и разметку максимально чистыми, и максимально семантически значимыми для (использование UL для меню) я придумал это предложение. Вероятно, не идеальный, но это может быть хорошая начальная точка:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Kind-of-justified horizontal menu</title>
<style type="text/css">
ul {
list-style: none;
margin: 0;
padding: 0;
width: 100%;
}
ul li {
display: block;
float: left;
text-align: center;
}
</style>
<script type="text/javascript">
setMenu = function() {
var items = document.getElementById("nav").getElementsByTagName("li");
var newwidth = 100 / items.length;
for(var i = 0; i < items.length; i++) {
items[i].style.width = newwidth + "%";
}
}
</script>
</head>
<body>
<ul id="nav">
<li><a href="#">first item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">last item</a></li>
</ul>
<script type="text/javascript">
setMenu();
</script>
</body>
</html>
Когда вы вызываете ToList ()
, вы не помещаете коллекцию в List
вы создаете новый List
с такими же элементами в нем. Таким образом, вы фактически создаете новый список, добавляете в него элементы, а затем отбрасываете список.
Вам нужно будет сделать что-то вроде:
List<E> merged = new List<E>();
merged.AddRange(resultCollection);
merged.AddRange(resultCollection2);
В качестве альтернативы, если вы используете C # 3.0, просто используйте Concat
, например
resultCollection.Concat(resultCollection2); // and optionally .ToList()
Я бы предположил .ToList ( ) создает новую коллекцию. Поэтому ваши предметы добавляются в новую коллекцию, которая сразу же выбрасывается, а оригинал остается нетронутым.
resultCollection.ToList ()
вернет новый список.
Попробуйте:
List<E> list = resultCollection.ToList();
list.AddRange(resultCollection2);
Попробуйте
IList newList = resultCollection .ToList (). AddRange (resultCollection2);
List<E> newList = resultCollection.ToList();
newList.AddRange(resultCollection2);
Вы можете использовать любое из следующего:
List<E> list = resultCollection as List<E>;
if (list == null)
list = new List<E>(resultCollection);
list.AddRange(resultCollection2);
Или:
// Edit: this one could be done with LINQ, but there's no reason to limit
// yourself to .NET 3.5 when this is just as short.
List<E> list = new List<E>(resultCollection);
list.AddRange(resultCollection2);
Или:
List<E> list = new List<E>(resultCollection.Concat(resultCollection2));