我在从通用列表中获取记录时遇到问题。我创建了一个通用函数,我想从中获取任何类型的类的记录。以下是示例代码:-
public void Test<T>(List<T> rEntity) where T : class
{
object id = 1;
var result = rEntity.Where(x => x.id == id);
}
Run Code Online (Sandbox Code Playgroud)
请建议。提前致谢。
通用列表类有一个.ForEach(Action<T> action)方法.现在我已经完成了一些关于它们如何表现的简单时间,似乎通用ForEach是较差的表演者.(Snippet Compiler Friendly)代码如下 -
public static class timer{
public static long foreachloop = 0;
public static long Gforeachloop = 0;}
public class something{
public List<string> myStrings = new List<string>();
public something()
{
for(int i = 1; i<=5000000;i++)
{
myStrings.Add(i.ToString());
}
}}
public class cls1{
private static List<string> Strings = new List<string>();
private static List<string> OtherStrings = new List<string>();
public static void RunSnippet()
{
something s = new something();
Stopwatch watch = new Stopwatch();
watch.Start();
foreach(string …Run Code Online (Sandbox Code Playgroud) 我们有一个用C#.Net 2.0编写的小框架,我们想要向COM公开.
问题是,我们有一些通用类,将公开如下:
interface IOurClass
{
ReadonlyCollection<IOurListObject> OurCollection
{
get;
}
}
interface IOurListObject
{
//Some properties that don't matter
}
Run Code Online (Sandbox Code Playgroud)
将通用集合暴露给COM的最佳(或推荐方法)是什么?我们不必支持泛型,我们只需要以某种方式公开IOurListObject的集合.
我们也希望避免为我们使用的每个集合编写一个新类,但它可能是不可能的.
我正在尝试将List转换为IEnumerable,因此我可以验证不同的列表不为null或为空:
假设myList是List <T>.然后在我想要的来电代码中:
Validator.VerifyNotNullOrEmpty(myList as IEnumerable<object>,
@"myList",
@"ClassName.MethodName");
Run Code Online (Sandbox Code Playgroud)
有价值的代码是:
public static void VerifyNotNullOrEmpty(IEnumerable<object> theIEnumerable,
string theIEnumerableName,
string theVerifyingPosition)
{
string errMsg = theVerifyingPosition + " " + theIEnumerableName;
if (theIEnumerable == null)
{
errMsg += @" is null";
Debug.Assert(false);
throw new ApplicationException(errMsg);
}
else if (theIEnumerable.Count() == 0)
{
errMsg += @" is empty";
Debug.Assert(false);
throw new ApplicationException(errMsg);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.它编译,但是无数是空的!为什么?
我正在实现一个应用程序,您必须验证某个对象是否在列表中.这种情况发生在.contains我知道的情况下,但是我用XML文件填充我的列表,然后我检查列表是否包含这个的对象是新创建的,因此引用不一样并且.Contains始终为false.
有谁知道解决这个问题?这是代码:
if (qfs.Contains(exa.Question.File))
{
booleansQuestionFile[i] = true;
}
Run Code Online (Sandbox Code Playgroud)
该if声明是始终为false.
我有一个通用的int列表,List<int>()我想知道它的一个项目的计数.我该怎么做?
扩展方法需要一个开放的通用IEnumerable.
我应该检查方法内部是否为空.
我认为列表必须永远不能为null但是count == 0.
你是如何处理这种情况的?
更新:
我忘了提到该方法是一种递归方法,其中列表是递归调用/传递的.
T 在以下声明中不受限制.
abstract public class Defaults<T>
Run Code Online (Sandbox Code Playgroud)
但是,我Defaults只用类处理String,Integer,Double.因此,我想限制T到String,Integer,Double.
显然,以下是不允许的,因为它们是决赛:
abstract public class Defaults<T extends String&Integer&Double>
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
我想要一种优雅的方式来创建一个新List<int>的整数.
例:
var from = 2;
var to = 5;
Run Code Online (Sandbox Code Playgroud)
我想要的是这个:
List<int> { 2, 3, 4, 5 };
Run Code Online (Sandbox Code Playgroud)
当然,我可以在这样的简单循环中完成:
var results = new List<int>();
for (var i = from; i <= to; i++)
{
results.Add(i);
}
Run Code Online (Sandbox Code Playgroud)
但我想要一些更有效或更优雅的方式.
我已经做了相当多的谷歌搜索来提出一些提示/例子,到目前为止无济于事.
有没有比基于列表的方法更通用的方法来实现排序算法?我可以去,sortGeneric :: IsList l => l a -> l a但这似乎是一个坏主意,因为IsList只不过是支持OverloadedLists.
也许我应该只是问一下排序Traversable t => t a?