簡體   English   中英

使用Linq更新列表

[英]Updating a list using Linq

我正在創建兩個對象列表。 一個“新”列表,一個“舊列表”。

我想從新列表上的對象中獲取一個屬性的值,並在匹配對象的舊列表上將屬性設置為新值。

//Original Solution
        foreach (RyderQuestion quest in myList)
        {
            //compare it to every question in ryder questions
            foreach (RyderQuestion oldQuestion in _ryderQuestions)
            {
                //if the question ids match, they are the same question, and should have the right selected option
                //selecting the option sets the checkbox of the MultipleChoideQuestionControl
                if (oldQuestion.QuestionID == quest.QuestionID)
                {
                    oldQuestion.SelectedOption = quest.SelectedOption;
                }
            }
        }

我正在嘗試將其轉換為LINQ,以使用聯接使其更有效,但是如何直接更新該值?

        var x = from quest in myList
                join oldquest in _ryderQuestions
                on new { quest.QuestionID, quest.ShowOn, quest.QuestionOrder }
            equals new { oldquest.QuestionID, oldquest.ShowOn, oldquest.QuestionOrder }
                select oldquest.SelectedOption = quest.SelectedOption;

該查詢將值返回到x列表,但是我實際上想更新舊列表中的對象。

Linq用於查詢 ,而不用於更新 您可以將兩個列表連接起來以排隊更新對象,但是仍然需要循環進行更改:

var query = from quest in myList
            join oldquest in _ryderQuestions
            on new { quest.QuestionID, quest.ShowOn, quest.QuestionOrder }
        equals new { oldquest.QuestionID, oldquest.ShowOn, oldquest.QuestionOrder }
            select new {oldquest, quest};

foreach(var item in query}
    item.oldquest.SelectedOption = item.quest.SelectedOption

例如:

var x = from quest in myList
            join oldquest in _ryderQuestions
            on new { quest.QuestionID, quest.ShowOn, quest.QuestionOrder }
        equals new { oldquest.QuestionID, oldquest.ShowOn, oldquest.QuestionOrder }

            select new {quest , oldquest};

foreach(var item in x)
{
    item.quest.SelectedOption = item.oldquest.SelectedOption;
}

你是這個意思?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM