我有一份作家名单.
public class Writers{
long WriterID { get;set; }
}
Run Code Online (Sandbox Code Playgroud)
我还有两个类型文章列表.
public class Article{
long ArticleID { get; set; }
long WriterID { get; set; }
//and others
}
Run Code Online (Sandbox Code Playgroud)
所以我的代码是:
List<Article> ArticleList = GetList(1);
List<Article> AnotherArticleList = AnotherList(2);
List<Writers> listWriters = GetAllForbiddenWriters();
Run Code Online (Sandbox Code Playgroud)
我想删除这些记录从ArticleList,AnotherArticleList其中WriterID来自匹配listWriters WriterID.如何在LINQ中执行此操作?
我刚刚发现Except()将从第一个列表中删除第二个列表中的所有元素,但它也会使返回结果中的所有元素都不同.
我正在使用的简单方法是 Where(v => !secondList.Contains(v))
任何人都可以向我解释为什么这是行为,如果可能的话,请指出解释这个问题的文档?
很抱歉发布这样的基本问题,我是LINQ的新手,我正试图找出最好的方法来做到这一点IList.
我有2 ILists<>个自定义dto对象.我想从列表中删除另一个中的所有匹配项.
IList<ItemDTO> list1 = itemsbl.GetBestItems();
IList<ItemDTO> list2 = itemsbl.GetWorstItems();
Run Code Online (Sandbox Code Playgroud)
我需要删除所有项目list1从list2.我一直在看这个Except()方法,但显然我需要我的ItemsDTO类来覆盖GetHashCode和Equals方法,但我无法找到一些这样的例子.
可能有人请告诉我删除的最佳方式list1从list2?
再次感谢
我有两个清单:
List<comparerobj> list_c = new List<comparerobj>();
List<comparerobj> list_b = new List<comparerobj>();
Run Code Online (Sandbox Code Playgroud)
我正以某种方式填写清单
然后我试图在list_b中找到list_c不包含的元素:
foreach (comparerobj b in list_b)
{
bool lc = !list_c.Contains(b);
if (lc != true)
{
data.Add(b);
}
}
Run Code Online (Sandbox Code Playgroud)
但是对于任何b我都得到那个lc = true.我究竟做错了什么?
How to remove list items from list1 which mats condition with list2 items using LINQ without duplicates
I know how to do it in simple foreach way but i want the same using Linq style single line code.
How to do it using Linq?
Input list
list1 = new List(){new object{id = 40},new object{id = 50},new object{id = 60}}
list2 = new List(){new object{id = 400},new object{id = 50},new object{id = 600}}
Run Code Online (Sandbox Code Playgroud)
Expected Output should from
list1
new object{id …
我正在从远程数据库读取一组行,从本地数据库读取类似的集合,然后使用RemoveAll删除本地已存在的远程行...
remote_events = (From a In remote.Events
Where ...etc...).ToList
local_events = (From a In local.Events
Where ...etc...).ToList
remote_events.RemoveAll(Function (ByVal event_row As Remote_Event)
(From a In local_events Where a.Identifier = event_row.Identifier).Count > 0)
Run Code Online (Sandbox Code Playgroud)
但这对我来说似乎不对.当我真正需要做的是检查是否存在匹配时,我认为我不应该计算事物.我已经试过的各种用途IsDBNull和IsNothing,但得到的废话.我不能使用.Except(这里建议)因为列表元素不是同一类型.
有没有更好的方法呢?
由于我是Linq或Lamdba的新手,我想知道Linq或Lambda中是否有一种方法可以根据另一个列表从列表中删除项目,如下例所示:
列表A = {A,B,C,D,E,F};
清单B = {C,A,E};
输出= B,D,F