簡體   English   中英

查找清單的值 <object> 使用C#和linq導致產生真實條件

[英]Find value of list<object> that cause to make true condition using C# and linq

我有一個名字是對象的列表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<objectB> resultList = sample.Where(ele => mainList.Any(x => ele == x.item).ToList();

我假設ObjectB是列表的表示

大量的娛樂例程供您娛樂

Enumerable.FirstOrDefault方法(IEnumerable)

返回序列的第一個元素,如果序列不包含任何元素,則返回默認值。

var obj = objectA.FirstOrDefault(x=> objectB.Contains(x.item));

Enumerable.First方法(IEnumerable)

返回序列的第一個元素。

var obj = objectA.First(x=> objectB.Contains(x.item));

Enumerable.Where方法(IEnumerable,Func)

根據謂詞過濾值序列。 每個元素的索引都在謂詞功能的邏輯中使用。

var objs = objectA.Where(x=> objectB.Contains(x.item));

List.IndexOf方法(T)

搜索指定的對象,並返回整個List中第一次出現的從零開始的索引。

var obj = objectA.IndexOf(obj);

Enumerable.Last方法(IEnumerable)

返回序列的最后一個元素


Enumerable.LastOrDefault方法

返回序列的最后一個元素,如果找不到元素,則返回默認值。


Enumerable.Intersect方法(IEnumerable,IEnumerable)

通過使用默認的相等比較器比較值來產生兩個序列的集合相交。

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
*/

Enumerable.Except方法(IEnumerable,IEnumerable

通過使用默認的相等比較器比較值來產生兩個序列的集合差異。

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
*/

多次迭代IEnumerable要小心。

從性能和簡便性的角度來看,這是一種不錯的選擇。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM