public class MyItem
{
public string Name { get; set; }
public IList<MyItem> ListByName(string name)
{
IList<MyItem> myItems = new List<MyItem>();
myItems.Add(new MyItem() { Name = "Item 1" });
myItems.Add(new MyItem() { Name = "Item 2" });
myItems.Add(new MyItem() { Name = "Item 3" });
myItems.Add(new MyItem() { Name = "Item 3" });
return (IList<MyItem>) myItems.Select(i => i.Name == name);
}
}
Run Code Online (Sandbox Code Playgroud)
我最初得到了一个强制转换异常(IEnumerable to IList),并且显式转换在这里不起作用.
我的目标是返回一个IList,其中MyItem.Name属性等于方法的参数.
这里几个问题:
我应该使用"选择","在哪里",或者两者都不在这里?
在这里返回过滤后的IList的正确方法是什么?
我正在阅读Python教程,我决定使用"Lambda"工具为自己创建一个小练习.这是一个基本的平方根计算器.但是,当我尝试运行它时,它不会返回一个数字.这是它到目前为止的样子.
x = int(raw_input("Enter number:"))
def power(n):
return lambda x: x**n
sqrt = power(0.5)
sqrt(x)
Run Code Online (Sandbox Code Playgroud)
为什么不起作用?如果我犯了一些可怕的错误,请提醒我.记住,我是新手,所以请不要复杂的语言.
我正在尝试用C#编写一个简单的Lambda表达式:
int numElements = 3;
string[]firstnames = {"Dave", "Jim", "Rob"};
string[]lastnames = {"Davidson", "Jameson", "Robertson"};
List<Person> people = new List<Person>();
for(int i = 0 ; i < numElements; i++)
{
people.Add(new Person { FirstName = firstnames[i], LastName = lastnames[i] });
}
bool test = people.Contains(p => p.FirstName == "Bob");
Run Code Online (Sandbox Code Playgroud)
我对Lambda表达式以及它们如何工作的理解仍然有点阴暗,我对于为什么这不起作用我很恼火......我试图找出一个列表是否包含一个名字......
我想调用Queryable.Where()并获取所有元素.没有Where()谓词函数,没有任何版本可行.所以我必须这样做:
var result = table.Where( x => true );
Run Code Online (Sandbox Code Playgroud)
它起作用但对我来说感觉真的很愚蠢 - x从未使用过,并且=>"箭头"符号没有"转换" .
有更优雅的解决方案吗?
g = lambda x:[lambda x:x*1, lambda x:x*x, lambda x:x*x*x, lambda x:42][x%4](x)
[g(x) for x in xrange(12)]
Run Code Online (Sandbox Code Playgroud)
这个序列的下一个值是什么?
我曾经以这种方式检索我在达到某个条件之前跳过的项目数:
List<double> series1X = new List<double> {4,6,8,9,10 };
List<double> series1Y = new List<double> { 10, 20, 15, 70,5 };
List<double> series2X = new List<double> { 1,2,3,6,7,8.1,8.2,8.3,8.4,9,9.75};
int j=0;
j = series2X.TakeWhile(p => p < series1X[0]).Count();
Run Code Online (Sandbox Code Playgroud)
所以j是series2X的项目的索引,它是series1X的第一项的下一个.
现在我将其重写为DataPoint 具有X,Y属性.我试过这样做,但我无法访问X或Y.
在这种情况下
List<DataPoint> series1 = new List<DataPoint>();
List<DataPoint> series2 = new List<DataPoint>();
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?谢谢
编辑:
我想要做的就是找到是否db.Id等于xml.Id和db.SubTitle等于xml.SubTitle....等.....我所有的道具
我也尝试过
bool result = db.SequenceEqual(xml) 它一直返回false.
编辑.编辑
我在最终寻求帮助之前做了搜索,我不确定解决问题的最佳方法是什么.
我有两个IList对象,它们都具有完全相同的属性,但数据可能不同.一个对象从db填充,其他对象从xml读取以比较两个源是同步的.
这是我的对象看起来像:
public class EmployeeObject
{
public Int32 Id { get; set; }
public string SubTitle { get; set; }
public string Desc { get; set; }
public bool Active { get; set; }
public string ActiveDateTime { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
IList<EmployeeObject> db = Db.EmployeeRepository.PopulateFromDb();
IList<EmployeeObject> xml = Xml.EmployeeRepository.PopulateFromXml();
Run Code Online (Sandbox Code Playgroud)
//到目前为止,这两个对象都填充了数据......
现在比较的时间:
我试过这样的事情:
if ((object)xml == null || ((object)db) == null) …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个lambda表达式来查看一个对象数组('fields'),这些对象可能包含也可能没有特定的项目.我想检索它们存在的值; 如果数组中没有字段的代码为"SomeCode",则没有值可以检索.我很好奇是否有更简洁的方法来编写下面的内容,因为我需要为很多字段执行此操作并且想要完成两次"FirstOrDefault"调用.
if (fields.FirstOrDefault(x => x.Code == "SomeCode") != null)
{
obj.CodeValue = fields.FirstOrDefault(x => x.Code == "SomeCode").Value;
}
Run Code Online (Sandbox Code Playgroud)
编辑:感谢您以"仅限Lambda"的方式做到这一点的任何见解; 我想提高我在这方面的技能,并认为有一些东西比调用它两次或只是将它分配给一个临时对象更干净.
我试图在C#中围绕LINQ语句,我试图将简单查询转换为等效的方法语法.
我见过的大多数例子都混杂着其他陈述和条件,并使用更复杂的类型.现在,我希望尽可能简化这一点.任何提示将不胜感激.
// create a list of numbers
List<int> data1 = new List<int>() { 1, 2, 3, 4 };
// create a list of numbers
List<int> data2 = new List<int>() { 5, 6, 7, 8 };
var query = from n1 in data1
from n2 in data2
select n1 * n2;
Run Code Online (Sandbox Code Playgroud)
有了这个,我得到16个数字,我可以使用foreach循环迭代.我想知道如何使用方法语法做同样的事情.
谢谢.
在python中我有一个元素列表,我想根据它的lambda值得到最小的元素.像这样的东西
def g(list, f):
min = list[0]
for i in list:
if f(i) < f(max):
min = i
return min
Run Code Online (Sandbox Code Playgroud)
如何使用lambda函数在1行中完成?
谢谢