0
var query = from table1 in dtSzotar
            where errorList.Any(word => table1.angol.Equals(word)) ||
                  errorList.Any(word=> table1.magyar.Equals(word))
            select new QueryObject
            {
                Lesson = table1.lesson,
                English = table1.angol,
                Hungarian = table1.magyar,
                Answer = "",
            };
foreach (QueryObject row in query)
{
      String tmp;
      ((App)Application.Current).Answer.TryGetValue(row.English, out tmp); 
      row.Answer = tmp;
}

dgInCorrect.ItemsSource = query.ToList();

データグリッドにも間違ったユーザーの回答を表示しようとしています。tmp答えが含まれていますが、に追加されていませんrow.Answer。また、データグリッドの最後に余分な空の行があります。私は何が間違っているのですか?

QueryObject.csは次のとおりです。

class QueryObject
{
    private int lesson;
    private String english;
    private String hungarian;
    private String answer;

    public int Lesson { get { return lesson; } set { lesson = value; } }
    public String Hungarian { get { return hungarian; } set { hungarian= value; } }
    public String English{ get { return english; } set { english= value; } }
    public String Answer{ get { return answer; } set { answer= value; } }
}
4

1 に答える 1

1

をループしていIEnumerable<QueryObject>ます。代わりに、クエリを以前にリストに変換すると、機能するはずです。

var query = (from table1 in dtSzotar
            where errorList.Any(word => table1.angol.Equals(word)) ||
                  errorList.Any(word=> table1.magyar.Equals(word))
            select new QueryObject
            {
                Lesson = table1.lesson,
                English = table1.angol,
                Hungarian = table1.magyar,
                Answer = "",
            }).ToList();

// now query is a List<QueryObject>
foreach (QueryObject row in query)
{
      String tmp;
      ((App)Application.Current).Answer.TryGetValue(row.English, out tmp); 
      row.Answer = tmp;
}

dgInCorrect.ItemsSource = query;
于 2012-12-09T20:10:26.520 に答える