2009-12-14 29 views
1

只是我想找到任何intCollCustomerData是單位數字的長度並選擇該customerData。C#序列選擇

List<CustomerData> cdata = new List<CustomerData>(); 

cdata.Add(
      new CustomerData { Key = 1, Name = "Marc", 
           intColl = new List<int>() { 1, 2, 3 } 
          } 
     ); 


cdata.Add(
      new CustomerData { Key = 2, Name = "Eric", 
          intColl = new List<int>() { 11, 12, 13 } 
          } 
     ); 


cdata.Add(
      new CustomerData { Key = 3, Name = "Peter", 
           intColl = new List<int>() { 111, 112, 113 } 
          } 
     ); 


cdata.Add(
      new CustomerData { Key = 4, Name = "Peter", 
           intColl = new List<int>() { 1111, 1112, 1113 } 
          } 
     ); 

執行以下

var query = cdata.Any(d => d.intColl.Find(c => c == 1)); 

當我收到

Cannot implicitly convert type 'int' to 'bool'.

+0

試(C =>(C == 1)) – 2009-12-14 21:46:48

回答

7

雖然你寫的查詢應該寫成,

var query = cdata.Any(d => d.intColl.Contains(1)); 

我想,根據你的問題的文字,你應該做的:

var query = cdata.Any(d => d.intColl.Any(c => c < 10 && c >= 0)); 

,並返回實際的對象(每個註釋):

var query = cdata.FirstOrDefault(d => d.intColl.Any(c => c < 10 && c >= 0)); 
if (query == null) { /* nothing fits the criteria */ } 
else { /* use `query` object */ } 
+0

我想男人想實際CustomerData對象返回,而不是一個布爾值。雖然他的文本幾乎不可解碼。所以我猜第一個Any應該是Where,也許是Take(1)最後......? – KernelJ 2009-12-14 22:01:09

+2

首先,而不是Take(1)。 – KernelJ 2009-12-14 22:02:13

1

不知道我跟着你。這可能是這樣的:

var query = cdata.Where(cd => cd.intColl.Any(i => i<10)); //assuming no negatives 

或本:

var query = cdata.Where(cd => cd.intColl.Length < 10);