C# 将对象传递给linq结果

C# 将对象传递给linq结果,c#,linq,list,C#,Linq,List,我从列表中得到一个项目来制作它 App.CurrentQuestion = App.AllQuestionList[dataSourceRowIndex]; 在创建之后,我将新数据保存到数据库中,并从数据库返回到App.CurrentQuestion,所以App.CurrentQuestion的列表引用中断。我想更新列表并尝试通过linq聚焦所选项目 App.AllQuestionList .Where(q => q.qID == App.CurrentQuestion.qID)

我从列表中得到一个项目来制作它

App.CurrentQuestion = App.AllQuestionList[dataSourceRowIndex];
在创建之后,我将新数据保存到数据库中,并从数据库返回到App.CurrentQuestion,所以App.CurrentQuestion的列表引用中断。我想更新列表并尝试通过linq聚焦所选项目

App.AllQuestionList
    .Where(q => q.qID == App.CurrentQuestion.qID)
    .FirstOrDefault() = App.CurrentQuestion;
但是我得到了一个错误,比如“赋值的左侧必须是变量、属性或索引器”

我可以用这个方法

for (int i = 0; i < App.AllQuestionList.Count; i++)
{
    if (App.AllQuestionList[i].qID == App.CurrentQuestion.qID)
    {
        App.AllQuestionList[i] = App.CurrentQuestion;
        break;
    }
}
for(int i=0;i

但我们正在寻找另一种方法。或者有更快的方法吗?

您不必做任何事情,因为它是通过引用实现的

App.CurrentQuestion = App.AllQuestionList[dataSourceRowIndex];
您在
App.CurrentQuestion
中所做的任何更改都应反映在
App.AllQuestionList

App.AllQuestionList[App.AllQuestionList.IndexOf(App.AllQuestionList.
    .Where(q => q.qID == App.CurrentQuestion.qID)
    .First())] = App.CurrentQuestion;

编辑:你可以使用IndexOf来找到你想通过LINQ查询找到的对象的索引

我猜OP的意思是
传递
,因为
assing
听起来确实很痛苦:)我想你误解了LINQ在这方面的作用case@Jamiec基于我认为他所指的问题assigning@DavidPilkington-你可能是对的。我将暂时保留它,如果im错误,让OP更新LINQ
。其中(…)
返回一个
IEnumerable
,它允许您在原始集合的只读视图中进行迭代。所以你不能更改内容。是的,我认为它是引用类型,数据应该已经同步了。但是我忘了告诉你;我在保存操作后从数据库中获取数据,因此无法继续引用。