Лучшим решением является просто не использовать анонимные классы.
public class Test {class DummyInterfaceImplementor: IDummyInterface {public string A {get; задавать; } public string B {get; задавать; }} public void WillThisWork () {var source = new DummySource [0]; var values = from value in source select new DummyInterfaceImplementor () {A = значение.A, B = значение.C + "_" + значение.D}; DoSomethingWithDummyInterface (values.Cast & л; IDummyInterface & GT; ()); } public void DoSomethingWithDummyInterface (значения IEnumerable & lt; IDummyInterface & gt;) {foreach (значение var в значениях) {Console.WriteLine ("A = '{0}', B = '{1}'", value.A, value.B) ; }}}
Обратите внимание, что вам нужно передать результат запроса в тип интерфейса. Возможно, это лучший способ сделать это, но я не смог его найти.
У вас все получилось, просто поместите пробел между !
и [[
как , если! [[
Да, вы можете отменить тест, поскольку SiegeX уже указал.
Однако вы не должны использовать для этого регулярные выражения - он может выйти из строя, если ваш путь содержит специальные символы , Попробуйте это вместо:
[[": $ PATH:"! = * ": $ 1:" *]]
Вы также можете поместить восклицательный знак в скобки:
, если [[! $ PATH = ~ $ temp]]
, но вы должны привязать свой шаблон для уменьшения ложных срабатываний:
temp = / mnt / silo / bin pattern = "(^ |:) $ temp (: | $)", если [[! $ PATH = ~ $ pattern]]
, который ищет совпадение в начале или конце с двоеточием до или после него (или обоих). Я рекомендую использовать строчные или смешанные имена переменных в качестве привычки, чтобы уменьшить вероятность столкновений имен с переменными оболочки.
$
, поэтому нет причин заглатывать их, чтобы они выделялись.
– SiegeX
1 January 2011 в 20:53
, если [[! $ foo = ~ bar]]
безопаснее, чем , если! [[$ foo = ~ bar]]
, поскольку для легче вводить дополнительные условия, если
– CTodea
27 June 2017 в 13:48
Мне нравится упрощать код без использования условных операторов в таких случаях:
TEMP = / mnt / silo / bin [[$ {PATH} = ~ $ {TEMP}]] | | PATH = $ PATH: $ TEMP
самый безопасный способ поставить! для отрицания регулярного выражения в [[]]
следующим образом:
, если [[! $ {STR} = ~ YOUR_REGEX]]; то
в противном случае он может выйти из строя в определенных системах.