List<string> a = new List<string>() { "a", "b", "c" };
List<string> b = new List<string>() { "a", "b", "c", "d", "e", "f" };
b.RemoveAll(a.Contains);
Run Code Online (Sandbox Code Playgroud)
如果你遍历b,它现在只包含de和f.任何人都可以扩展实际发生的事情,因为目前它根本没有任何意义.
编辑:我更多地谈论谓词的使用.怎么知道如何将内容传递到哪里?
怎么可以ThenBy翻译成Linq-To-Sql,请?
var movies = _db.Movies.Orderby(c => c.Category).ThenBy(n => n.Name)
var movies = from m in _db.Movies
orderby m.Category
// What's the syntax for ThenBy?!
// thenby m.Name
select m;
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时thenby m.Name,我得到编译器错误.
我有一个问题,我可以使用这样的东西解决
sortedElements.ForEach((XElement el) => PrintXElementName(el,i++));
Run Code Online (Sandbox Code Playgroud)
这意味着我在ForEach中有一个允许使用int i等参数的lambda.
我喜欢这样做的方式,但我读到某处匿名方法和lambda委托会导致大量内存泄漏,因为每次执行lambda时都会实例化某些内容但不会被释放.这样的事情.
你能告诉我这种情况是否属实,如果是这样的话?
我收到错误:
名为's'的局部变量不能在此范围内声明,因为它会给's'赋予不同的含义,'s'已在'子'范围内用于表示其他内容.
static void Main(string[] args)
{
string s = "hello"; // Line 1
var test = new[] { "abd", "def" }.Select(s => s.StartsWith("a")); // Line 2
}
Run Code Online (Sandbox Code Playgroud)
为什么?
我猜想第1行的's'会被'.Select(s => ..'第2行中的'decleration)阴影但是 - 据我所知 - 事实并非如此......
PS我不确定是否用正确的术语表示 - 如果有更好的单词/短语,请纠正我.
阅读本文后,我发现了几种调用方法的方法.
致电方法:
public static void SendData(string value) { }
Run Code Online (Sandbox Code Playgroud)
呼叫:
delegate void MyDelegate(string value);
//Slow method - NOT RECOMMENDED IN PRODUCTION!
SendData("Update");
// Fast method - STRONGLY RECOMMENDED FOR PRODUCTION!
MyDelegate d = new MyDelegate(SendData);
d.BeginInvoke("Update", null, null);
Run Code Online (Sandbox Code Playgroud)
这是真的吗?它更快吗?
Action send = () => Send("Update");
send();
Run Code Online (Sandbox Code Playgroud)
或许这个?
我需要将一个方法调用到具有最高性能的SQL CLR触发器中,因此即使很小的速度增加也是有意义的.
你能回答我下一步该怎么办吗?如何使用Lambda做到这一点?如果此方法不知道委托对象的类型,是否可以委托一些对象实例并使用其属性和方法?
class class_a {
public string getChildData<T> (T dynamicInstance) {
return dynamicInstance.prop;
}
}
class class_b : a {
public string prop = "prop_b";
}
class class_c : a {
public string prop = "prop_c";
}
var inst_b = new b ();
var inst_c = new c ();
b.getChildData(b);
c.getChildData(c);
Run Code Online (Sandbox Code Playgroud)
目的:在父类中获取子属性?
更新:使用反射 - http://forums.asp.net/t/1608839.aspx
谢谢,阿尔乔姆
如果我有以下怎么做,我将lambda表达式的结果从IEnumerable转换回Customer类型,而不必迭代它.
public class Customer : CustomerModel
{
public List<Customer> CustomerList {get;set;}
public Customer GetCustomerFromListById(long id)
{
return CustomerList.Select(c => c).Where(i => i.Id == id);
}
}
Run Code Online (Sandbox Code Playgroud) 这两个Lambda表达式之间有什么区别?第二个看起来更紧凑我应该总是这样做吗?
DataContext.Employee.Where(c=>c.id==check_id && c.username==user_name).Select(c=>c.Name).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
和
DataContext.Employee.FirstOrDefault(c=>c.id==check_id && c.username==user_name).Name;
Run Code Online (Sandbox Code Playgroud) 对于bool值比较,lambda表达式的正确语法是什么?
下面的示例显示了rsp.InputOutput哪个是bool值.但是,当我尝试执行此操作时,我收到编译器错误.我知道它的东西很小,任何帮助赞赏.
在这个例子中,我想选择InputOutput值为的所有规则集参数true.
validRuleSetParameters.SelectMany(rsp => rsp.InputOutput == true)
Run Code Online (Sandbox Code Playgroud)
谢谢Niall
在页面上code.google.com/p/fakeiteasy/我注意到了这一行:
A.CallTo(() => shop.GetTopSellingCandy()).Returns(lollipop);
Run Code Online (Sandbox Code Playgroud)
所以问题是 - 如何将lambda表达式作为方法参数传递?
c# ×10
lambda ×10
.net ×3
linq ×3
.net-3.5 ×1
boolean ×1
class ×1
delegates ×1
expression ×1
foreach ×1
ienumerable ×1
linq-to-sql ×1
list ×1
method-call ×1
parent ×1