抱歉也许是noob问题)但我只是想学习新的东西。 我有一个数组,其中包含许多字段的对象 - 如何 如果例如此对象的第一个字段对于某个字符串是否相等,请选中(此字段也是一个字符串,因此不需要类型操作)
答案 0 :(得分:2)
考虑这种情况:
// Some data object
public class Data {
public string Name { get; set; }
public int Value { get; set; }
public Data(string name, int value)
{
this.Name = name;
this.Value = value;
}
}
// your array
Data[] array = new Data[]
{
new Data("John Smith", 123),
new Data("Jane Smith", 456),
new Data("Jess Smith", 789),
new Data("Josh Smith", 012)
}
array.Any(o => o.Name.Contains("Smith"));
// Returns true if any object's Name property contains "Smith"; otherwise, false.
array.Where(o => o.Name.StartsWith("J"));
// Returns an IEnumerable<Data> with all items in the original collection where Name starts with "J"
array.First(o => o.Name.EndsWith("Smith"));
// Returns the first Data item where the name ends with "Smith"
array.SingleOrDefault(o => o.Name == "John Smith");
// Returns the single element where the name is "John Smith".
// If the number of elements where the name is "John Smith"
// is greater than 1, this will throw an exception.
// If no elements are found, this` would return null.
// (SingleOrDefault is intended for selecting unique elements).
array.Select(o => new { FullName = o.Name, Age = o.Value });
// Projects your Data[] into an IEnumerable<{FullName, Value}>
// where {FullName, Value} is an anonymous type, Name projects to FullName and Value projects to Age.
答案 1 :(得分:1)
如果您只想在字段/ Property中找到具有特定值的数组中的第一个元素,则可以使用LINQ FirstOrDefault:
var element = array.FirstOrDefault(e => e.MyField == "value");
如果没有找到这样的值,这将返回满足条件的第一个元素或null
(或您的类型的其他默认值)。
答案 2 :(得分:1)
如果我理解你的任务,我不是100%,但无论如何我都会尽力回答: 如果您想获得具有所需字段的第一个对象,可以使用FirstOrDefault:
var element = myArray.FirstOrDefault(o => o.FirstField == "someString");
如果未找到该元素,则返回null。
如果您只想检查数组中的某个对象是否与您的字符串匹配,可以使用任何
进行检查bool found = myArray.Any(o => o.FirstField == "someString");
希望这有帮助
答案 3 :(得分:0)
Select()用作投影(即数据转换),而不是过滤器。如果要过滤一组对象,则应该查看.Where(),Single(),First()等。如果要验证属性是否适用于集合中的Any或All元素,您也可以使用它们。
答案 4 :(得分:0)
您可以使用Where
子句过滤列表
var list = someList.Where(x => x.Name == "someName").FirstOrDefault();
var list = someList.Where(x => x.Name == "someName").ToList();
使用FirstOrDefault
仅选择一个对象,并使用ToList
选择符合您定义的条件的多个对象。
并确保在比较strings
时比较所有UppperCase
或LowerCase
个字母。
var list = someList.Where(x => x.Name.ToUpper().Equals("SOMENAME")).FirstOrDefault();