如何从集合初始化语法中检索特定值

时间:2019-03-20 15:55:37

标签: c# collections initializer

Declare global temporary table updatedID
( <ID NAME> <ID TYPE> );
Insert into session.updatedID
Select <ID> from <TABLE> where <CONDITIONAL CLAUSE>
;
Update <TABLE> set <SET STATMENTS> where <ID> in (Select <ID NAME> from session.updatedID)
;
--Optional
Drop table updateID;

我正在使用Collection Initializer语法。我知道使用foreach打印所有Name值的方法。 但是,如何检索特定值(例如,检索“史蒂夫”)?

2 个答案:

答案 0 :(得分:1)

您可以使用索引器通过其索引访问列表中的项目,例如:

import org.apache.logging.log4j.core.lookup.MainMapLookup;

        System.setProperty("logserverdir", APPSERVERID);
        final String [] args = {
                "APPSERVERID"
        };
        MainMapLookup.setMainArguments(args);

[3/20/19 11:53:14:423 EDT] 00000075 SystemOut O 2019-03-20 11:53:14,421 server.startup : 2 ERROR FileManager (/usr/local/pfs/logs/${main:0}/log4j_api_commons.log) java.io.IOException: The filename, directory name, or volume label syntax is incorrect. java.io.IOException: The filename, directory name, or volume label syntax is incorrect. at java.io.WinNTFileSystem.canonicalize0(Native Method) at java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:439) at java.io.File.getCanonicalPath(File.java:629) at java.io.File.getCanonicalFile(File.java:654) at org.apache.logging.log4j.core.util.FileUtils.makeParentDirs(FileUtils.java:134) at org.apache.logging.log4j.core.appender.FileManager$FileManagerFactory.createManager(FileManager.java:286) at org.apache.logging.log4j.core.appender.FileManager$FileManagerFactory.createManager(FileManager.java:274) at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:112) at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114) at org.apache.logging.log4j.core.appender.FileManager.getFileManager(FileManager.java:112) at org.apache.logging.log4j.core.appender.FileAppender$Builder.build(FileAppender.java:86) at org.apache.logging.log4j.core.appender.FileAppender$Builder.build(FileAppender.java:51) at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122) at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:952) at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:892) at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:884) at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:508) at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:232) at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:244) at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:545) at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:617) at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:634) at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:229) at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152) at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45) at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194) at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551) at com.ca.apps.shared.rest.init.ApplicationConfigurationLoader.<clinit>(ApplicationConfigurationLoader.java:77) at com.ca.apps.shared.rest.init.ApplicationConfigurationLoader.<clinit>(ApplicationConfigurationLoader.java) at java.lang.J9VMInternals.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1899) 返回string nameOfTheSecondItem = studentList[1].Name; 中的第二项,因为索引是从零开始的。

还请注意,尝试访问不存在的索引上的项目将抛出studentList[1],因此在使用上述代码之前,应检查studentList是否存在,除非您确定知道列表始终至少包含两个项目。

答案 1 :(得分:1)

有许多方法可以在List中查找元素。一种常见的方法是像下面一样使用LINQ

查找所有名为Steve的学生。这将返回一个IEnumerable<Student>,可用于进一步处理或通过循环打印出来,也可以使用{{1}的ToArray()ToList()扩展名将其转换为数组或List }}

IEnumerable

如果您确定只有一个var allSteves = studentList.Where(s => s.Name == "Steve"); ,则可以使用Steve扩展方法

FirstOrDefault()

这将返回一个空记录(假设var steve = studentList.FirstOrDefault(s => s.Name == "Steve"); 是一个类)或一个以Student为名称的Student记录。如果希望LINQ在找不到名称为Steve的Student记录时引发异常,则可以使用Steve方法。

还有一个First()可以提供帮助,但是LINQ方法适用于所有List.Find,包括数组和列表

不用说,您可以在IEnuerableWhereFirst等方法中为匹配条件实现更复杂的逻辑。

相关问题