你怎麼做的LINQ與非拉姆達快遞以下(不工作):LINQ與非拉姆達所有包含
string[] words = { "believe", "relief", "receipt", "field" };
var wd = (from word in words
select word).Any(Contains ("believe"));
你怎麼做的LINQ與非拉姆達快遞以下(不工作):LINQ與非拉姆達所有包含
string[] words = { "believe", "relief", "receipt", "field" };
var wd = (from word in words
select word).Any(Contains ("believe"));
目前還不清楚,你相信什麼好from wor in words select wor
在做什麼 - 它根本沒有幫助你。
這也不清楚爲什麼你不要想要使用lambda表達式。最明顯的做法是:
bool hasBelieve = words.Any(x => x.Contains("believe"));
注意,這是不檢查的單詞列表是否有字,「相信」的 - 它檢查單詞的列表中是否有含「相信」任何單詞。所以「信徒」會很好。如果你只是想檢查列表中是否包含believe
你可以使用:
bool hasBelieve = words.Contains("believe");
編輯:如果你真的想做不lambda表達式,你需要基本假工作該lambda表達式(或匿名方法)確實爲你:
public class ContainsPredicate
{
private readonly string target;
public ContainsPredicate(string target)
{
this.target = target;
}
public bool Apply(string input)
{
return input.Contains(target);
}
}
然後可以使用:
Func<string, bool> predicate = new ContainsPredicate("believe");
bool hasBelieve = words.Any(predicate);
顯然,你真的不希望,雖然做...
編輯:當然,你可能使用:
var allBelieve = from word in words
where word.Contains("believe")
select word;
bool hasBelieve = allBelieve.Any();
但是,這是很醜陋,太 - 我肯定會使用拉姆達表達。
感謝Jon,你怎麼能用非lamda來做,因爲我喜歡看它是如何完成的。 – 2011-12-14 21:30:38
你可以那樣做
string[] words = { "believe", "relief", "receipt", "field" };
var wd = (from wor in words
where wor.Contains("believe")
select wor);
這個問題,這是非常相似似乎已經在這裏問:http://stackoverflow.com/questions/1566439/linq-help-with-contains-and -a-lambda-查詢 – Dessus 2011-12-14 21:35:26