2015-08-10 1 views
0

Мне нужно найти поле, в котором пользователи могут ввести Order Number или keyword. ключевое слово необходимо найти в MemberOrderLineItemItemName значение.как искать список в значениях списка в C#

прямо сейчас я делаю для номера для заказа, как это.

memberOrderInformationList = memberOrderInformationList 
    .Where(x => x.OrderNumber.Contains(searchString)) 
    .OrderByDescending(x => x.OrderDate) 
    .ToList(); 

Но как включить MemberOrderLineItem ItemName значение также?

public class MemberOrderInformation 
{ 
    public string OrderNumber { get; set; } 
    public DateTime? OrderDate { get; set; } 
    ... 
    public List<MemberOrderLineItem> LineItems { get; set; } 
    public MemberOrderInformation() 
    {    
     LineItems = new List<MemberOrderLineItem>();   
    } 
} 

[Serializable] 
public class MemberOrderLineItem 
{ 
    public string OrderNumber { get; set; } 
    public int OrderLineNumber { get; set; } 
    public string ItemName { get; set; } 
    public string Status { get; set; } 
    ... 
    ... 
} 
+0

Вы хотите это: 'вар lineItems = memberOrderInformationList.SelectMany (X => x.LineItems) .где (x => x.OrderNumber.Contains (searchString)). ToList(); ' –

ответ

0

если я понять вопрос правильно, вы можете попробовать

memberOrderInformationList = 
memberOrderInformationList.Where(x=>x.OrderNumber.Contains(searchString) 
|| x.LineItems.FirstOrDefault(l => l.ItemName.Contains(searchString)) != null) 
.OrderByDescending(x => x.OrderDate).ToList(); 

EDIT: Глядя на другие ответы, используя .Any() противоположность .FirstOrDefault является экологически чистым вариантом, хотя и должны работать одинаково хорошо.

2

попробовать это

memberOrderInformationList = memberOrderInformationList.Where(x=>x.OrderNumber.Contains(searchString) 
|| x.LineItems.any(p => p.ItemName.Contains(searchString)) 
).OrderByDescending(x => x.OrderDate).ToList(); 
0

Вы можете попробовать это:

memberOrderInformationList = memberOrderInformationList.Where(x=>x.OrderNumber.Contains(searchString) 
                   || x.LineItems.Any(y=>y.ItemName.Contains(keyword))) 
                 .OrderByDescending(x => x.OrderDate) 
                 .ToList(); 
-1
memberOrderInformationList = memberOrderInformationList 
       .Where(x => x.OrderNumber.Contains(searchString)) 
       .OrderByDescending(x => x.OrderDate) 
       .Where(x=>x.LineItems.Any(x=>x.ItemName == "hej")) 
       .ToList(); 

 Смежные вопросы

  • Нет связанных вопросов^_^