我有2个清单:
myObject object1 = new myObject(id = 1, title = "object1"};
myObject object2 = new myObject(id = 2, title = "object2"};
myObject object3 = new myObject(id = 3, title = "object3"};
//List 1
List<myObject> myObjectList = new List<myObject>{object1, object2, object3};
//List 2
List<int> idList = new List<int>{2, 3};
Run Code Online (Sandbox Code Playgroud)
有没有办法使用Linq只拉取第二个列表中存在的第一个列表中的对象,以便我留下:
{object2, object3}
Run Code Online (Sandbox Code Playgroud)
我看着相交,但似乎这只有两个列表属于同一类型时才有效.
任何帮助将不胜感激.
谢谢.
我创建了以下内容以将一些数据公开为正则表达式匹配字符串以及StringDictionary.感觉就像我可以使用更少行的LINQ来做到这一点.
private const string STREETTYPES = @"ALY|Alley|AVE|Avenue|BLVD|Boulevard|CIR|Circle|CT|Court|CTR|Center|DR|Drive|EXPY|Expressway|FWY|Freeway|HALL|Hall|HWY|Highway|JCT|Junction|LN|Lane|LP|Loop|PIKE|Pike|PKWY|Parkway|PL|Place|RD|Road|ST|Street|TER|Terrace|TPKE|Turnpike|TRL|Trail|WAY|Way";
private static StringDictionary streetTypes = null;
public static StringDictionary StreetTypes
{
get
{
if (streetTypes != null) return streetTypes;
streetTypes = new StringDictionary();
var streetArray = STREETTYPES.Split(PIPE);
for (int i = 0; i < streetArray.Length-1; i = i+2)
{
streetTypes.Add(streetArray[i], streetArray[i + 1]);
}
return streetTypes;
}
}
Run Code Online (Sandbox Code Playgroud) 隐式转换似乎是Scala的一个主要且有争议的特性,而它们似乎在C#中的突出程度要小得多.它们在两种语言中有什么区别?有没有我在Scala中被迫使用implicits的地方,或者我总是可以选择是否希望转换是隐式的还是显式的,就像在C#中一样?通常在C#中,我喜欢明确地进行转换,以便维护程序员意图的类型检查,即使消费者是我自己.
我是否正确地说C#或Scala都不能隐式拆分或组合方法/函数参数?在def myMethod(v1:Int,v2:Int)中不接受Tuple2 [Int,Int]作为其参数列表,def yourMethod(v1:Tuple2 [Int,Int])将不接受两个整数作为其参数列表.据推测,语言设计者必须考虑隐式/显式参数分割/组合.当使用多个但相似的图形库的点结构时,我确实发现这个特性是可取的.
在通用列表中是否有一个内置函数可以从特定索引中的另一个列表中添加一个范围,还是我必须编写自己的?
例如:
List<int> list1 = new List<int>();
List<int> list2 = new List<int>();
list1.Add(10);
list1.Add(20);
list1.Add(30);
list2.Add(100);
//list2.AddRange(list1, 1) Add from list1 from the index 1 till the end
Run Code Online (Sandbox Code Playgroud)
在这个例子中,list2应该有3个元素:100,20和30.
我应该自己写还是有内置功能可以做到这一点?
我已经定义了一个(String,Int)对的列表.
type PatientList = [(String,Int)]
Run Code Online (Sandbox Code Playgroud)
我需要以'name'和'number'的形式将数据添加到此列表中,其中number将在列表的每个添加中递增,例如,添加3个名称后的列表(或元组)将如下所示:
[("bob", 1), ("ted", 2), ("harry", 3)]
Run Code Online (Sandbox Code Playgroud)
将使用以下代码捕获名称:
do putStr "You are? "
name <- getLine
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案是创建一个名单列表,例如(bob,ted,harry),然后使用zip,将这些列表组合如下:
zip = [1...]["bob","ted","harry"]
Run Code Online (Sandbox Code Playgroud)
此解决方案不符合我的要求,因为我希望在不同时间添加到列表中而不是组合在一起.我怎样才能做到这一点?