草庐IT

c# - 将 IEnumerable<T> 转换为字符串 []

我有一个名为Product的实体classProduct{publicId{get;set;}publicName{get;set;}}我有所有产品的list:IEnumerableproducts=_productRepository.GetAll()我想从这个产品列表中获取一个字符串数组,这个数组将包含产品ID+产品名称,所以当我尝试使用以下代码转换它时:string[]s=products.Cast().ToArray();我得到以下异常:Unabletocastobjectoftype'Product'totype'System.String'这个异常真的很有趣,所以如果我有一

c# - 从 Dictionary<Key, Item> 中移除元素

我有一个字典,其中的项目是(例如):“A”,4“乙”,44“再见”,56“C”,99“D”,46"6672",0我有一个列表:“一个”“C”“D”我想从我的字典中删除所有键不在我的列表中的元素,最后我的字典将是:“A”,4“C”,99“D”,46我该怎么办? 最佳答案 构造新的Dictionary以包含列表中的元素更简单:ListkeysToInclude=newList{"A","B","C"};varnewDict=myDictionary.Where(kvp=>keysToInclude.Contains(kvp.Key)).

c# - LINQ:如何从 IQueryable<T> 中删除元素

如何遍历IQueryable并删除一些我不需要的元素。我正在寻找这样的东西varitems=MyDataContext.Items.Where(x=>x.Container.ID==myContainerId);foreach(Itemiteminitems){if(IsNotWhatINeed(item))items.Remove(item);}这可能吗?提前致谢 最佳答案 你应该可以像这样进一步查询varfiltered=items.Where(itm=>IsWhatINeed(itm));还要注意bool函数的细微变化,从否定

c# - .net 中的转换 : Native Utf-8 <-> Managed String

我创建了这两种方法来将nativeutf-8字符串(char*)转换为托管字符串,反之亦然。以下代码完成这项工作:publicIntPtrNativeUtf8FromString(stringmanagedString){byte[]buffer=Encoding.UTF8.GetBytes(managedString);//notnullterminatedArray.Resize(refbuffer,buffer.Length+1);buffer[buffer.Length-1]=0;//terminating0IntPtrnativeUtf8=Marshal.AllocHGlob

c# - 如何将 T 类型的单个值转换为 IEnumerable<T>?

这个问题在这里已经有了答案:PassingasingleitemasIEnumerable(19个回答)关闭5年前。必须有一个很好的标准方法来做到这一点,但是我从事的每个项目都必须编写自己的统一方法,或者创建一个内联数组等。(我希望这会很快作为一个问题的副本而关闭,并且有一些很好的答案)

c# - Func<T, TResult> 和 Converter<TInput, TOutput> 有什么区别?

查看Func和Converter委托(delegate)的签名,publicdelegateTResultFunc(Targ);publicdelegateTOutputConverter(TInputinput);我很难看出两者之间的区别。当然,如果我们重命名泛型类型参数,它们本质上是一样的吗?有人能解释一下为什么它们都存在吗? 最佳答案 没有区别。它们存在的原因是历史性的。Converter在.NET2.0中已经可用,但整个范围Func稍后添加了委托(delegate)类型。为了保持一致性,Func已添加,但它与Converte

c# - 可以锁定 System.Collections.Generic.List<t> 吗?

我一直在阅读有关syncroot元素的信息,但我在List类型中找不到它。那么System.Collections.Generic.List类型应该如何进行多线程同步呢? 最佳答案 你找不到它的原因是因为它是explicitlyremoved.如果它真的是你想做的,使用SynchronizedCollection或者创建一个专用的同步对象。最好的方法(通常)是创建一个专用的同步对象,正如Winston所说明的那样。SyncRoot的本质问题特性是它提供了一种错误的安全感——它只能处理非常有限的情况。开发人员经常忽略整个逻辑操作的同步

c# - 将由返回字符分隔的字符串转换为 List<string> 的最佳方法是什么?

我需要经常将“字符串block”(包含返回字符的字符串,例如来自文件或文本框)转换为List.有什么方法比下面的ConvertBlockToLines方法更优雅?usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;namespaceTestConvert9922{classProgram{staticvoidMain(string[]args){stringtestBlock="lineone"+Environment.NewLine+"linetwo"+Environment.NewLine+"linethree"

c# - List<T> 在更改时触发事件

我创建了一个继承List的类EventList,它会在每次添加、插入或删除某些内容时触发一个事件:publicclassEventList:List{publiceventListChangedEventDelegateListChanged;publicdelegatevoidListChangedEventDelegate();publicnewvoidAdd(Titem){base.Add(item);if(ListChanged!=null&&ListChanged.GetInvocationList().Any()){ListChanged();}}...}目前我将它用作这样

c# - 在 C# 4 中使用 Nullable<T> 时遇到的问题

我刚开始写一个组件,我发现声明一些属性可为空可能很有用,而不是让它们求助于默认值。但是,我意识到我以前从未使用过non-nullable-type?语法或Nullable之前打字,所以可能会有一些陷阱很快就会跳出来咬我。所以……使用Nullable时最大的陷阱是什么?和速记?语法?我该如何解决它们?当我开始使用它们时,它们给我带来的最大优势/新可能性是什么? 最佳答案 一个常见的陷阱是尝试使用条件表达式分配给可为空的变量,如下所示:booluseDefault=true;intdefaultValue=50;int?y=useDef