Linq Выбрать определенные свойства в другой объект?
Так сказать, у меня есть коллекция Bloops
Class Bloop
Public FirstName
Public LastName
Public Address
Public Number
Public OtherStuff
End Class
Тогда у меня есть класс Razzies
Class Razzie
Public FirstName
Public LastName
End Class
Можно ли использовать Linq для выбора FirstName и LastName из всех Bloops в коллекции Bloops и вернуть коллекцию Razzies? Или я ограничиваюсь For-Loop, чтобы выполнять свою работу?
Чтобы устранить любую путаницу, сделают VB или С#. Кроме того, это, вероятно, приведет к тому, что я задаю вопрос (о том, как использовать предложение "Где" ).
Ответы
Ответ 1
Это должно выполнить задание:
Dim results = From item In bloops _
Select New Razzie() With _
{ _
.FirstName = item.FirstName, _
.LastName = item.LastName _
}
И если вы хотите преобразовать результат из IEnumerable<Bloop>
(то, что возвращает запрос LINQ) в массив или List<Bloop>
, просто добавьте вызов методам расширения ToArray()
или ToList()
соответственно.
Изменить: Исправлен код, так что теперь он имеет действительный синтаксис VB.NET 9.
Ответ 2
List<Bloop> myBloops = new List<Bloops>;
//populate myRazzies
List<Razzie> myRazzies = myBloops.Select(x => new Razzie() { FirstName = x.FirstName, LastName = x.LastName}).ToList();
Ответ 3
public void Linq9()
{
string[] words = { "aPPLE", "BlUeBeRrY", "cHeRry" };
var upperLowerWords =
from w in words
select new { Upper = w.ToUpper(), Lower = w.ToLower() };
foreach (var ul in upperLowerWords)
{
Console.WriteLine("Uppercase: {0}, Lowercase: {1}", ul.Upper, ul.Lower);
}
}
Ответ 4
Преобразование из одного типа в другое может быть выполнено с помощью Enumerable.Select
Фактически существует образец из 101 образцов linq, который показывает запрос, преобразующий ints в строки.
Ответ 5
C# Sample - Thanks to earlier posters.
List<clsObj> myList = new List<clsObj>();
clsObj clsObjInstance = null;
for (int i = 0; i < 10; i++)
{
clsObjInstance = new clsObj() { x = (i+1) % 3, a = "A" + i.ToString() };
myList.Add(clsObjInstance);
}
List<int> extIntList = myList.Select(u => u.x).ToList();
foreach (int u in extIntList)
Console.Write(u.ToString() + "\t");
List<string> extStringList = myList.Select(u => u.a).ToList();
foreach (string u in extStringList)
Console.Write(u + "\t");