Как мне вернуть значение из LINQ в параметр? C # - PullRequest
0 голосов
/ 08 ноября 2019

Итак, есть такой метод:

public void Method(A a, B b)
{
     OtherMethod(a, a.list.ForEach(o => {if(o.Status == Good){ return o};), b)
}

OtherMethod() требуется 3 параметра. Я хочу, чтобы o указывал параметры, но я не знаю как. Кто-нибудь знает как?

Актуальный код:

public void AddProduct(UserDTO u, ProductDTO p)
{
    if(CheckForCurrentOrder(u) != 0) //returns ID of order with status = "NotPaid"
    {
        CreateEmptyOrder(u);
        SetProductInOrder(u, u.Orders.ForEach(o => { if (o.Status == EnumsDTO.OrderStatus.NotPaid) { return o}; }), p);
    }

//rest of database code thats not relevant..
}

Ответы [ 4 ]

2 голосов
/ 08 ноября 2019

Попытайтесь получить желаемое значение с помощью Where() и получить его с помощью FirstOrDefault() метода:

var o = a.list.Where(o => o.Status == Good)).FirstOrDefault();
if (o != null) {
    OtherMethod(a, o, b)
}
1 голос
/ 08 ноября 2019

при условии, что здесь вы хотите передать «o» в качестве параметра в «OtherMethod ()», для этого вы можете создать новый список как

 List<string> c = new List<string>();

, а затем добавить значение o в список c в соответствии с логикой.

    c.Add()
//pass c as parameter to method
    OtherMethod(a, c, b);

надеюсь, это поможет

1 голос
/ 08 ноября 2019

Вы можете использовать метод Линка First() (или аналогичный):

OtherMethod(a, a.list.First(o => o.Status == Good), b)

First найдет первый элемент в a.list, который соответствует условию o.Status == Good(и выдаст исключение, если элементы не соответствуют этому условию). Возможно, вы захотите использовать FirstOrDefault вместо этого, который возвращает значение по умолчанию, если ни один элемент не соответствует этому условию, из Single, который гарантирует, что только один элемент соответствует этому условию.

0 голосов
/ 08 ноября 2019

Это также стоит того, чтобы проверить все объекты и выполнить их соответственно

u.Orders.Where(o => o.Status == EnumsDTO.OrderStatus.NotPaid)
        .Select(o => OtherMethod(a, o, b));
...