2014-03-26 6 views
0

Мне нужно проверить, имеет ли коллекция два значения первичного ключа. Я сделал, как,LINQ to return Boolean

// Код

Dim query = TableColumnsCollection.GroupBy(Function(x) x.IsPrimaryKey).Where(Function(y) y.Count() > 1) 

Теперь я должен вернуть тип, как boolean, когда количество превышает более, чем «One».

Когда счетчик превышает 1, он должен быть «Истинным», иначе «Ложь».

я должен получить что-то подобное,

Dim blnFlag As Boolean= False 

blnFlag=//Query here ??? 

Когда я попытался назначить выше запрос я получаю ошибку ниже.

"Value of type IEnumarable cannot be converted to Boolean" 

Как я могу это сделать?

+0

Я не могу скомпилировать ваш запрос в моей голове. Я согласен с компилятором C#. Пожалуйста, объясните, что вы хотите. Похоже, вы хотите проверить, есть ли более одного столбца 'IsPrimaryKey'. Но было бы легко, что вы хотите найти, есть ли несколько столбцов с 'IsPrimaryKey == false'. – Aron

ответ

4

Вы можете использовать Any вместо Where:

Dim containsDups As Boolean = TableColumnsCollection. 
     GroupBy(Function(x) x.IsPrimaryKey). 
     Any(Function(y) y.Count() > 1) 

но вы также можете сохранить Where, если вам это нужно для других вещей, и использовать Any потом:

Dim allDups = TableColumnsCollection. 
    GroupBy(Function(x) x.IsPrimaryKey). 
    Where(Function(y) y.Count() > 1) 
Dim containsDups As Boolean = allDups.Any() 
+0

Бриллиант !!! .. получил это. – iamCR

+1

Я сомневаюсь, что это то, что ему нужно. Он вернет false для всех TableCollection с более чем 3-мя элементами. Это сделает довольно скучную коллекцию. – Aron

+2

@Aron Вы имели в виду * It would not *? –