Мы используем следующий фрагмент кода для выбора конкретного object
от collection
на основе имени property
.Запрос Linq для выбора записи
ObservableCollection<Test> collection = new ObservableCollection<Test>();
collection.Add(new Test() { Id =1, Name ="Nestor"});
collection.Add(new Test() { Id = 2, Name = "Rohan" });
collection.Add(new Test() { Id = 3, Name = "Guy" });
collection.Add(new Test() { Id = 4, Name = "Mike" });
string s = "Rohan";
var temp = collection.FirstOrDefault(x =>
{
if (x.Name != null)
{
return x.Name.ToString().Equals(s);
}
else
{
return x.Name;
}
});
Мы получили следующую ошибку в этом фрагменте кода.
Ошибка:
Error 1 Cannot convert lambda expression to delegate type 'System.Func' because some of the return types in the block are not implicitly convertible to the delegate return type C:\Users\vadiveln\documents\visual studio 2010\Projects\WindowsFormsApplication12\WindowsFormsApplication12\Program.cs 36 25 WindowsFormsApplication12 Error 2 Cannot implicitly convert type 'string' to 'bool' C:\Users\vadiveln\documents\visual studio 2010\Projects\WindowsFormsApplication12\WindowsFormsApplication12\Program.cs 36 32 WindowsFormsApplication12
Можете ли вы смотреть на это и представить предложение использовать правильный способ Linq query
. Заранее спасибо.
Модифицированный код ниже:
ObservableCollection<Test> collection = new ObservableCollection<Test>();
collection.Add(new Test() { Id = 1 });
collection.Add(new Test() { Id = 2, Name = "Rohan" });
collection.Add(new Test() { Id = 3, Name = "Guy" });
collection.Add(new Test() { Id = 4, Name = "Mike" });
string s = "Rohan";
var temp = collection.FirstOrDefault(x =>
{
return x.Name.Equals(s);
});
Мы используем в нуль, поданный в основной коллекции. Тогда как использовать Linq запрос
Ваша лямбда возвращает 'string' или' bool' в зависимости от отрасли это принимает. –
Разве x.Name уже строка? Почему ToString()? –
erm ... всем вам ... не собиралась. FirstOrDefault (x => x == s); сравнить объекты Test со строкой s? Так что наверняка это должна быть коллекция. FirstOrDefault (x => x.Name == s) –