繁体   English   中英

如何将 LINQ 中的值返回到参数中? C#

[英]How do i return a value from LINQ into a parameter? C#

于是就有了这个方法:

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..
}

尝试通过Where()获取您想要的值并通过FirstOrDefault()方法获取它:

var o = a.list.Where(o => o.Status == Good)).FirstOrDefault();
if (o != null) {
    OtherMethod(a, o, b)
}

您可以使用 Linq 的First() (或类似)方法:

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

First将在a.list中找到与条件o.Status == Good匹配的第一个项目(如果没有项目匹配此条件,则会抛出异常)。 您可能希望使用FirstOrDefault代替,如果没有项目匹配此条件,则返回默认值, Single可确保只有单个项目匹配此条件。

假设在这里您想在“OtherMethod()”中将“o”作为参数传递,您可以创建一个新列表为

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

然后根据逻辑将o的值添加到列表c中。

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

希望能帮助到你

这也值得一试,它检查所有对象,并相应地执行它们

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM