我在这里努力学习LINQ语法...以为我会把它丢在这里.我无法找到我正在寻找的其他地方.
好吧,说我有这个:
public class Bar
{
public int BarId { get; set; }
}
public class Foo
{
public List<Bar> BarList { get; set; }
}
List<Foo> fooBunch = GetABunchOfFoos(); //let's just assume I'm getting more than one
List<Foo> fooSelect = new List<Foo>;
List<Bar> filterBars = GetAFewBars(); //assume I'm getting like 2 or 3
fooSelect = (from f in fooBunch
where !(from b in f.BarList select b.BarId).Contains(ITEM FROM filterBars.BarId)
select f).ToList();
Run Code Online (Sandbox Code Playgroud)
所以,长话短说我想使用LINQ根据另一个列表中的对象过滤掉我的对象列表.我希望这是有道理的.我想我只是迷失在Contains部分......我不知道怎么写.
我有一个detailcollection集合,每个细节都有
code, price, name
Run Code Online (Sandbox Code Playgroud)
并带有一些代码的字符串
string codes = "1,2,3";
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用数组 string.Split()
string[] codesarray = codes.Split(',');
Run Code Online (Sandbox Code Playgroud)
但是我如何才能获得产品codes呢?
// the idea I have, but I would not like to have a loop
for (int i = 0; i < codesarray.Length; i++)
{
detailcollection.Where(x => x.ope_idsku == codesarray[i])
}
Run Code Online (Sandbox Code Playgroud)
我想要像:
detailcollection.Where(x => x.ope_idsku not in (codesarray))
Run Code Online (Sandbox Code Playgroud) 使用带有Single()的LINQ时,我总是以绿色下划线代码,并提示"将单个调用替换为单个".这是什么意思?以下是产生该建议的一行代码示例:
var user = db.Users.Where(u => u.UserID == userID).Single();
Run Code Online (Sandbox Code Playgroud)
如你所见,我只使用Single()一次.那么......这笔交易是什么?