Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用linq更新linkedlist中的节点值_C#_Linq_Linked List_Find - Fatal编程技术网

C# 如何使用linq更新linkedlist中的节点值

C# 如何使用linq更新linkedlist中的节点值,c#,linq,linked-list,find,C#,Linq,Linked List,Find,我想使用linq更新链接列表中的节点值。遍历列表、找到正确的节点并更新值是可行的,但我认为linq方法可能更干净 这是我的尝试,导致编译错误无法将lambda表达式转换为类型,因为它不是委托类型: // get IV value where Node BookID=4 var val = Globals.BookLL.Where(B => B.BookID == 4).Select(B => B.IV).Single(); // can update first node usin

我想使用linq更新链接列表中的节点值。遍历列表、找到正确的节点并更新值是可行的,但我认为linq方法可能更干净

这是我的尝试,导致编译错误
无法将lambda表达式转换为类型,因为它不是委托类型

// get IV value where Node BookID=4
var val = Globals.BookLL.Where(B => B.BookID == 4).Select(B => B.IV).Single();

// can update first node using this method
Globals.BookLL.First.Value.IV = 999;

// can upddate IV by traversing list
LinkedListNode<Globals.Node> Current = Globals.BookLL.First;
while (Current != null)
            {
                if(Current.Value.BookID==4)
                {
                    Current.Value.IV = 444;
                }
                Current = Current.Next;
            }

   // how can you update IV using linq?
   Globals.BookLL.Find(B => B.BookID == 4).Value.IV = 999;        // cannot convert lambda expression to type <Main.Globals.Node> because it is not a delegate type
//获取节点BookID=4的IV值
var val=Globals.bookl.Where(B=>B.BookID==4);
//可以使用此方法更新第一个节点
Globals.bookl.First.Value.IV=999;
//可以通过遍历列表来升级IV
LinkedListNode当前=Globals.bookl.First;
while(当前!=null)
{
if(Current.Value.BookID==4)
{
Current.Value.IV=444;
}
当前=当前。下一步;
}
//如何使用linq更新IV?
Globals.bookl.Find(B=>B.BookID==4).Value.IV=999;//无法将lambda表达式转换为类型,因为它不是委托类型
谢谢你的帮助

Globals.BookLL.Find(B => B.BookID == 4)
这将返回一个
IEnumerable
,您应该使用LINQ的
First()

这将返回一个
IEnumerable
,您应该使用LINQ的
First()

如果你使用

Globals.BookLL val = Globals.BookLL.Single(B => B.BookID == 4);
要确定项目,可以使用
Find()

若要更改其值,请使用

Globals.BookLL val = Globals.BookLL.Single(B => B.BookID == 4);
Globals.BookLL.Single(b => b.BookId == 4).IV = 44;
要确定项目,可以使用
Find()

改变它的值

Globals.BookLL.Single(b => b.BookId == 4).IV = 44;
如果BookID是唯一的,则可以使用
单个


如果BookID是唯一的,则可以使用
single

如果是Linq方法,则应首先调用
Globals.bookl.First()
如果是Linq方法,则应首先调用
Globals.BookLL.First()
First()
返回一个
bookl
,它没有
propertyThanks,但我认为fubo是正确的。我在
IV
上收到一个编译错误,说
double不包含IV的定义,也没有接受扩展方法IV….
谢谢大家,我真的很感谢你们的帮助。
First()
返回一个
bookl
没有
值的属性库,但我认为fubo是对的。我在
IV
上得到一个编译错误,说
double没有包含IV的定义,也没有接受扩展方法IV….
谢谢大家,非常感谢您的帮助。我在第一个
bookl上遇到一个编译错误-找不到类型或命名空间…
@Zeus将
bookl
替换为
Globals。bookl
我在第一个
bookl上遇到一个编译错误-找不到类型或命名空间…
@Zeus将
bookl
替换为
Globals.bookl
我可以对嵌套链表使用相同的方法吗?我得到一个错误:
vark=Globals.bookl.Single(B=>B.BookID==4);var G=K.GreeksLL.Single(G=>G.BookOrComp==“Book”和&G.GreekType==“Delta”);无法在此范围内声明本地名称或参数名称G…
:D没问题!。我可以对嵌套链表使用相同的方法吗?我得到一个错误:
vark=Globals.bookl.Single(B=>B.BookID==4);var G=K.GreeksLL.Single(G=>G.BookOrComp==“Book”和&G.GreekType==“Delta”);无法在此范围内声明本地名称或参数名称G…
:D没问题!。