查找列表的值<;对象>;这导致使用C#和linq生成真实条件

查找列表的值<;对象>;这导致使用C#和linq生成真实条件,c#,C#,我有一个名为ObjectA的对象列表和另一个名为ObjectB的对象列表,如: var result = objectA.any(x=> objectB.contain(x.item)); 现在我的问题是:如果我的条件为真,我如何找到导致我的条件为真的ObjectB的值?您可以尝试的是: List<ObjectB> sample = new List<ObjectB>(); List<ObjectA> mainList = new List<Ob

我有一个名为
ObjectA
的对象列表和另一个名为
ObjectB
的对象列表,如:

var result = objectA.any(x=> objectB.contain(x.item));
现在我的问题是:如果我的条件为真,我如何找到导致我的条件为真的
ObjectB
的值?

您可以尝试的是:

List<ObjectB> sample = new List<ObjectB>();
List<ObjectA> mainList = new List<ObjectA>();
objectB result = sample.FirstOrDefault(ele => mainList.Any(x => ele == x.item);
List sample=newlist();
List mainList=新列表();
objectB result=sample.FirstOrDefault(ele=>mainList.Any(x=>ele==x.item);
或者,如果需要多个对象,则:-

  List<objectB> resultList = sample.Where(ele => mainList.Any(x => ele == x.item).ToList();
List resultList=sample.Where(ele=>mainList.Any(x=>ele==x.item).ToList();
我假设
ObjectB
是列表的表示形式

您可以尝试的是:

List<ObjectB> sample = new List<ObjectB>();
List<ObjectA> mainList = new List<ObjectA>();
objectB result = sample.FirstOrDefault(ele => mainList.Any(x => ele == x.item);
List sample=newlist();
List mainList=新列表();
objectB result=sample.FirstOrDefault(ele=>mainList.Any(x=>ele==x.item);
或者,如果需要多个对象,则:-

  List<objectB> resultList = sample.Where(ele => mainList.Any(x => ele == x.item).ToList();
List resultList=sample.Where(ele=>mainList.Any(x=>ele==x.item).ToList();

我假设
ObjectB
是列表的一种表示形式

一个供您娱乐的大量findy例程

返回序列的第一个元素,如果 序列不包含任何元素


返回序列的第一个元素


根据谓词筛选值序列。每个元素的 索引用于谓词函数的逻辑中


搜索指定的对象并返回该对象的从零开始的索引 整个列表中的第一个匹配项


返回序列的最后一个元素


返回序列的最后一个元素,如果没有,则返回默认值 元素被找到


使用默认值生成两个序列的集合交点 用于比较值的相等比较器

int[]id1={44,26,92,30,71,38};
int[]id2={39,59,83,47,26,4,30};
IEnumerable两者=id1.相交(id2);
foreach(两者中的int-id)
控制台写入线(id);
/*
此代码生成以下输出:
26
30
*/

)

使用默认值生成两个序列的集合差 用于比较值的相等比较器

double[]numbers1={2.0,2.0,2.1,2.2,2.3,2.3,2.4,2.5};
双[]数字2={2.2};
IEnumerable only yinFirstSet=numbers1.Exception(numbers2);
foreach(仅在第一组中为双倍数字)
控制台写入线(编号);
/*
此代码生成以下输出:
2.
2.1
2.3
2.4
2.5
*/

为您的娱乐提供了大量的芬迪程序

返回序列的第一个元素,如果 序列不包含任何元素


返回序列的第一个元素


根据谓词筛选值序列。每个元素的 索引用于谓词函数的逻辑中


搜索指定的对象并返回该对象的从零开始的索引 整个列表中的第一个匹配项


返回序列的最后一个元素


返回序列的最后一个元素,如果没有,则返回默认值 元素被找到


使用默认值生成两个序列的集合交点 用于比较值的相等比较器

int[]id1={44,26,92,30,71,38};
int[]id2={39,59,83,47,26,4,30};
IEnumerable两者=id1.相交(id2);
foreach(两者中的int-id)
控制台写入线(id);
/*
此代码生成以下输出:
26
30
*/

)

使用默认值生成两个序列的集合差 用于比较值的相等比较器

double[]numbers1={2.0,2.0,2.1,2.2,2.3,2.3,2.4,2.5};
双[]数字2={2.2};
IEnumerable only yinFirstSet=numbers1.Exception(numbers2);
foreach(仅在第一组中为双倍数字)
控制台写入线(编号);
/*
此代码生成以下输出:
2.
2.1
2.3
2.4
2.5
*/

要小心多次迭代
IEnumerable

从性能和简单性的角度来看,这是一种很好的方法

var result = objectA.Where(x => objectB.contain(x.item)).ToList();

if (result.Any())
{
    // use the already enumerated objects inside "result" list
}

要小心多次迭代
IEnumerable

从性能和简单性的角度来看,这是一种很好的方法

var result = objectA.Where(x => objectB.contain(x.item)).ToList();

if (result.Any())
{
    // use the already enumerated objects inside "result" list
}

var result=objectA.FirstOrDefault(x=>objectB.contain(x.item));……或者,如果您有多个元素可能满足条件,并且您对所有元素都感兴趣,那么请使用
Where
代替。请注意,在Visual Studio中处理实例变量或静态类时,假设您使用的是VS,则可以键入“”它将向您显示可用方法和属性/字段的列表。这是发现您可以对对象执行哪些操作的方法之一。在两个对象中,我有一些属性,其中只有一个是相同的。我想检查包含该属性的属性。var匹配=objectB.Where(b=>objectA.item==b);var result=objectA.FirstOrDefault(x=>objectB.contain(x.item));…或者,如果您有多个可能满足条件的元素,并且您对所有这些元素都感兴趣,那么请使用
Where
instead注意,在Visual Studio中处理实例变量或静态类时,假设您使用的是VS,则可以键入“.”它将向您显示可用方法和属性/字段的列表。这是发现您可以对对象执行哪些操作的方法之一。在两个对象中,我有一些属性,其中只有一个是相同的。我想检查包含该属性的属性。var匹配=objectB。其中(b=>objectA.item==b);很好的解释,先生。不。如果你的列表不是同一类型,只是不起作用。@Amireza Farahlagha这是一个非常奇怪的评论,你到底在做什么mean@TheGeneral这很简单,在您的示例中使用了两个对象的双数组,现在如果您的obj
int[] id1 = { 44, 26, 92, 30, 71, 38 };
int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };

IEnumerable<int> both = id1.Intersect(id2);

foreach (int id in both)
    Console.WriteLine(id);

/*
 This code produces the following output:

 26
 30
*/
double[] numbers1 = { 2.0, 2.0, 2.1, 2.2, 2.3, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };

IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);

foreach (double number in onlyInFirstSet)
    Console.WriteLine(number);

/*
 This code produces the following output:

 2
 2.1
 2.3
 2.4
 2.5
*/
var result = objectA.Where(x => objectB.contain(x.item)).ToList();

if (result.Any())
{
    // use the already enumerated objects inside "result" list
}