C#序列选择

Rus*_*sel 1 c# linq

只是我想找到任何的intCollCustomerData的长度为个位数的,并选择customerData.

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 }
                             }
          );
Run Code Online (Sandbox Code Playgroud)

执行以下操作时

var query = cdata.Any(d => d.intColl.Find(c => c == 1));
Run Code Online (Sandbox Code Playgroud)

我收到

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

Meh*_*ari 7

虽然你写的查询应该写成,

var query = cdata.Any(d => d.intColl.Contains(1));
Run Code Online (Sandbox Code Playgroud)

我认为,根据您的问题文本,您应该这样做:

var query = cdata.Any(d => d.intColl.Any(c => c < 10 && c >= 0));
Run Code Online (Sandbox Code Playgroud)

并返回实际对象(根据评论):

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

  • 首先而不是Take(1). (2认同)