`where client.name.ToLower().Contains(name.开发者_JS百科ToLower())
Now it's clearer. It's a (badly done) case insensitive search for the name
in the client.name
. True if name
is contained in client.name
. Badly done because using international letters (clearly "international letters" don't exist. I mean letters from a culture different from you own. The classical example is the Turkish culture. Read this: http://www.i18nguy.com/unicode/turkish-i18n.html , the part titled Turkish Has An Important Difference
), you can break it. The "right" way to do it is: client.name.IndexOf(name, StringComparison.CurrentCultureIgnoreCase) != -1
. Instead of StringComparison.CurrentCultureIgnoreCase
you can use StringComparison.InvariantCultureIgnoreCase
. If you have to use tricks like the ToLower
, it has been suggested that it's better to ToUpper
both sides of the comparison (but it's MUCH better to use StringComparison.*
)
Looks like LINQ to me.
I'm not really up-to-date on .NET these days, but I'd read that as looking for client
objects whose name
property is a case-insensitive match with the ToString
property of the client
variable, while allowing additional characters before or after, much like WHERE foo is like '%:some_value%'
in SQL. If I'm right, btw, client
is a terrible variable name in this instance.
This is a strange piece of code. It would be good to know a bit more about the client object. Essentially it is checking if the case insensitive name value on the client object contains the case insensitive value of the client object (as a string). So if the client name contains the string name of the class itself essentially.
.ToLower() returns the same string you call it on in all lowercase letters. Basically, this statement returns true if name.ToLower() is embedded anywhere within client.name.ToLower().
//If:<br/>
client.name = "nick, bob, jason";
name = "nick";
//Then:<br/>
client.name.ToLower().Contains(name.ToLower());
//would return true
精彩评论