1

ユーザーが提供する検索フィルター(この場合はエージェントの名前)に基づいて、Linqクエリから特定のアイテムを削除する必要があります。

基本的に、最初のクエリは関連するテーブルからすべての情報を取得し、指定されたものに対応する名前を持たないものを除外する必要があります。

以下は私が使おうとしていたコードですが、明らかにfollowUpItems.Remove()実際の方法ではなく、それらの線に沿って何かを探しているだけです。followUpItemsリストではなくとして定義されているのでvar、これが可能かどうか疑問に思います。

        var followUpItem = from follow in db.FollowUpItems
                           where (follow.TableName.Equals(TableName) || TableName.Equals("%")) &&
                                 (follow.IssueType.Equals(IssueType) || IssueType.Equals("%")) &&
                                 (follow.Status.Equals(Status) || Status.Equals("%"))
                           orderby follow.Id
                           select follow;

        //Set display names
        foreach (var item in followUpItem)
        {
            var key1 = int.Parse(item.Key1);

            var name = (from a in db.Agent
                               where key1 == a.SymetraNumber
                               select a).Single();

            item.DisplayName = name.FirstName + " " + name.LastName;
            if (!item.DisplayName.Equals(AgentName))
                followUpItem.Remove(item);
        }
4

1 に答える 1

2
followUpItem = followUpItem.RemoveAll(i=> i.Id == item.Id);

申し訳ありませんが、iqueryableでは機能しません。代わりにこれを試してください:

followUpItem = followUpItem.Where(i=> i.Id != item.Id);

これは、IDがnullになることはないと想定しています。

「削除するアイテム」のリストを作成して、ループの外で.Except(itemsToRemove)を呼び出すこともできます。ループ内のリストを変更すると、頭痛の種になることがあります;)

followUpItem = followUpItem.Except(itemsToRemove);
于 2013-03-21T21:17:31.080 に答える