我有两个这样的班
public class Stock
{
public StockItem Item;
public string Location;
public int Quantity;
public string Price;
}
public class StockItem
{
public string Code;
public string Name;
public string Unit;
}
我有一个列表,其中包含Stock
类的多个实例
var stockList = new List<Stock>();
我试图确定列表内每个实例的Name
属性是否等于预定义的字符串。目前,我正在浏览这样的列表
foreach (var stock in stockList)
{
if (stock.Item.Name.ToLower() == "test")
{
Console.WriteLine("Found the class")
break;
}
}
但是,我想知道是否有使用Linq或类似于.Contains
方法的方法更有效的方法。有没有更简单或更有效的方法来完成此任务?
答案 0 :(得分:0)
列表中每个实例的Name属性是否相等 到预定义的字符串
效率不高,但更简单:
bool allAreEqual = stockList.All(x => x.Item.Name.Equals("test", StringComparison.OrdinalIgnoreCase))
如果您想查找符合条件的第一个条件(循环的实际作用):
Stock si = stockList.FirstOrDefault(x => x.Item.Name.Equals("test", StringComparison.OrdinalIgnoreCase));
现在您知道是否存在这样的Stock
(si != null
),并且知道了。
答案 1 :(得分:0)
所有linq都将返回True或false
stockList.All(p => p.Item.Name.ToLower() == "test");
答案 2 :(得分:0)
您可以使用Linq def getData(spark: SparkSession,
indices: Option[String]): Option[DataFrame] = {
indices match {
case None => {
println("Undefined field.")
None
}
case Some(ind) => {
val df = spark
.read.format("org.elasticsearch.spark.sql")
.load(ind)
Some(df) // here
}
}
方法:
Any()
答案 3 :(得分:0)
您真的在查看所有实例吗?从您的问题来看,似乎Any
可能是可行的方式,请参见here。
stockList.Any(p => p.Item.Name.ToLower() == "test");
答案 4 :(得分:0)
致电Any
bool result = stockList.Any(
stock => stock.Item.Name.Equals("text", StringComparison.InvariantCultureIgnoreCase)
);
在此代码中,可以根据需要更改参数名称stock
。