对不起,也许noob问题),但我只是想学习新的东西。 我有一个数组,保存与许多领域的对象 - 如何 检查与选择是否例如该对象的第一个字段是相同的一些字符串? (本场也是一个字符串,所以没有类型OPS需要)选择lambda的用法
回答
考虑这种情况:
// 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.
谢谢你的完整答案))很高兴知道)) – curiousity
@curiousity,不客气。请注意,这里有更多的LINQ扩展。您可能想要研究IEnumerable接口,因为这是LINQ的基础之一。此外,智能感知文档将有助于理解每种扩展方法的功能。 – series0ne
如果你只是想找到与字段/属性一定值数组第一个元素,你可以使用LINQ FirstOrDefault:
var element = array.FirstOrDefault(e => e.MyField == "value");
这如果没有找到这样的值,将返回满足条件或null
(或其他类型的默认值)的第一个元素。
Select()用作投影(即数据转换),而不是过滤器。如果你想过滤一组对象,你应该看看.Where(),Single(),First()等等。如果您想验证某个属性是否适用于集合中的Any或All元素,那么也可以使用这些元素。
您可以使用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();
我不是100%,如果我理解你的追问,但我会尽量尝试回答这个问题: 如果你想只得到与所需领域的第一个对象,你可以使用FirstOrDefault:
var element = myArray.FirstOrDefault(o => o.FirstField == "someString");
如果找不到元素,它将返回null。
如果你只是要检查,如果你的数组中的某些对象的字符串相匹配,你可以用任何
bool found = myArray.Any(o => o.FirstField == "someString");
希望检查此这有助于
- 1. 选择所有的Lambda凡()
- 2. 在lambda表达式中使用的Lambda属性值选择器
- 3. 全部选择EF和lambda
- 4. 使用LAMBDA。选择()与实体框架
- 5. 为选择的ObjectQuery lambda表达式内选择
- 6. 从TableName中选择*的Lambda表达式
- 7. boost lambda :: bind返回类型选择
- 8. Lambda表达式来选择XML
- 9. C#LINQ Lambda表达式选择
- 10. C#ToDictionary lambda选择索引和元素?
- 11. 动态属性选择器lambda函数
- 12. 生成动态选择lambda表达式
- 13. mvc c#从多个lambda表中选择
- 14. Lambda表达式 - 选择运算符
- 15. Lambda选择很多表达式
- 16. lambda选择地图差异轨道4
- 17. boost lambda的用法
- 18. 如何使用lambda表达式来选择特定的项目?
- 19. 使用lambda表达式的复合选择
- 20. 使用LINQ和Lambda在DataSet中选择和Foreach不起作用
- 21. 使用Javascript - 形式选择框语法选择的选项
- 22. 无法选择的选择标记
- 23. lambda的uncrustify选项
- 24. 无法使用从Ruby中的选择/拒绝过滤器中的方法返回的Proc/lambda
- 25. SQL LINQ Lambda用于内部连接以选择特定列
- 26. 如何使用python lambda表达式进行选择
- 27. 使用lambda从并行字典中选择记录
- 28. 内部使用异步/等待。选择lambda
- 29. 怎么写 “从PUB_PAGE_MENUSTRUCTUR选择*其中PARENTID为空” 使用lambda
- 30. Groupby然后使用lambda/linq选择数据
“第一“以什么条件?字母顺序的变量名称? – thumbmunkeys
你能举一些例子代码吗? - 也许调查LINQ扩展方法(首先,任何,地方)...在这方面选择听起来像错误的方法 – series0ne
'array.Where(a => a.property ==“my string”)。ToList()' –