列表中的FirstOrDefault不起作用

时间:2013-05-31 05:25:19

标签: asp.net-mvc asp.net-mvc-4 lambda

我有一个像

这样的清单
var listDataDemo = model.Jobs.ToList();

listDataDemo包含如下数据

Count = 13
[0]: {PaymentItemModel}

当我输入立即窗口时,如

listData.FirstOrDefault()

它给出了结果

Amount: 0
Date: {1/01/0001 12:00:00 AM}
Method: "PayPal"
PayerName: null
PayerNumber: null
PaymentDetailType: Payment
TransactionId: null

但是当我写作(我班上的代码)

var demoVal = listData.FirstOrDefault(p=>p.Method=="PayPal")

The name 'demoVal' does not exist in the current context(no value)

如何从LIST获取值。

请帮帮我。

3 个答案:

答案 0 :(得分:1)

关闭袖口,您提供给FirstOrDefault以过滤结果的谓词看起来有语法错误:(p=>p.Method="PayPal")应为(p=>p.Method=="PayPal")

当然,这可能是一个错字,完整性:

'='是一个赋值运算符,用于当你想为变量赋值时。

'=='是一个相等比较运算符,用于测试值之间的相等性并获得'true'或'false'。


编辑回答拼写错误...

您使用的是实体框架吗? EF还有FirstOrDefault的扩展方法,但filter参数是SQL查询。如果您使用EF,那么您可能会遗漏以下内容:

using System.Collections.Generic;
using System.Linq;

答案 1 :(得分:1)

以下代码对我来说很好。看看:

        List<test> testList = new List<test>();

        testDB testObj = new testDB();
        testList = testObj.fn_getAll();
        var abc = testList.FirstOrDefault(a => a.Id == 3);

您只是尝试更改变量的名称,这可能会导致问题。

我希望它会对你有所帮助.. :)

答案 2 :(得分:0)

您对FirstOrDefault的调用中的谓词似乎有拼写错误。您希望==进行比较,而不是=进行分配。