我有一个名为string array
的{{1}},其中包含batchnames。我想将它与batches
进行比较,并获取与实体的batchName字段匹配的所有记录。我正在使用Batch entity
。
Entity Framework 6
现在我正在使用class Batch
{
int batchId { get; set;}
string batchname { get; set;}
string info { get; set;}
DateTime date { get; set;}
}
foreach
如何使用foreach(var item in batches)
{
var res=opt.Batch.Where(i=>i.batchname==item).FirstOrDefault();
batchlist.Add(res);
}
而不使用LINQ
答案 0 :(得分:4)
您可以替换整个foreach循环并保留2行代码,将i.batchname==item
替换为以下内容:
batches.Contains(i.batchname)
然后,您可以一次性将所有项目添加到列表中,因为这将返回名称在批次数组中的所有批次。
变量res将返回一个枚举,然后可以循环以添加到列表中,或者您可以使用允许AddRange()的列表
希望这有帮助。
答案 1 :(得分:2)
如下:
var batchlist = opt.Batch.Where(x => batches.Contains(x.batchname)).ToList();
答案 2 :(得分:0)
下面的内容会有所帮助。
foreach(var item in batches)
{
batchlist.AddRange(opt.Batch.Where(i=>i.batchname.Any(item => i.batchname==item)).ToList());
}
答案 3 :(得分:0)
这将为您提供批处理对象列表:
var resultList = opt.Batch.Join(batches, left => left.batchname, right => right, (left, right) => left
将最后一个'左'更改为'右',将为您提供批名称的字符串列表
var resultList = opt.Batch.Join(batches, left => left.batchname, right => right, (left, right) => right