2013-11-22 44 views
0

可以查询子句需要识别ID或者我应该说的id组集合中,可以查询是这样如何实现“在哪里”在LINQ

var logs = from record in RecordCollection(string.Concat(sourcePath + fileName)) 
          where record.Id == 800 && record.Id == 307 && record.Id == 314 && record.Id == 372 && record.Id == 105 
          select record; 

这是正确的方式?即使系列中有ID,我也没有得到任何结果。 TIA

回答

2

||

var logs = from record in RecordCollection(string.Concat(sourcePath + fileName)) 
      where record.Id == 800 || 
       record.Id == 307 || 
       record.Id == 314 || 
       record.Id == 372 || 
       record.Id == 105 
      select record; 

或更短这样的替换&&

var ids = new []{800,307,314,372,105}; 
var logs = from record in RecordCollection(string.Concat(sourcePath + fileName)) 
      where ids.Contains(record.Id) 
      select record; 
+0

谢谢,我已经采取了更短的一个。 –

+0

@KGSosa是的,这是更好的,还记得接受答案,谢谢。 –

1

你可能想的||(OR)运算符:

var logs = from record in RecordCollection(string.Concat(sourcePath + fileName)) 
      where record.Id == 800 || 
       record.Id == 307 || 
       record.Id == 314 || 
       record.Id == 372 || 
       record.Id == 105 
      select record; 

现在你检查你当前正在迭代的记录ts Id具有值800和307和314等您想检查它是否有任何这些。

+0

是的,我想检查这些ID是否在列表中 –

+0

@KGSosa你还在等什么?更好的答案? –

0

考虑下面的代码...

var logs = from record in RecordCollection(string.Concat(sourcePath + fileName)) 
         where new List<int> { 800, 307, 314, 372, 105}.Contains(record.Id) 
         select record; 

祝您好运!

0

&&替换为||

要在许多地方使用,你应该建立一个方法。例如这里:

public static bool IsIn<T>(this T source, params T[] values) 
{ 
    return values.Contains(source); 
} 

,并称之为:

var logs = from record in RecordCollection(string.Concat(sourcePath + fileName)) 
         where record.IsIn(800,105,307) 
         select record;